Мой процесс останавливается на сервере sql. Я пытаюсь запустить процедуру и использую codeigniter 3

Я не знаю, почему, когда я пытаюсь вызвать процедуру в моем приложении, мой процесс останавливается на SQL Server, и моя страница остается в ожидании вечно.
Я попытался выполнить тот же запрос в SQL Server Management Studio, и у меня был успех, но в моем приложении не слишком много.

Мой контроллер: test.php

 class Test extends CI_Controller
{

public function __construct(){
parent::__construct();
}

public function index()
{
$this->load->model('test_model');
$data['test'] = $this->test_model->get_test();
}
}

Моя модель: test_model.php

class Test_model extends CI_Model
{

public function __construct()
{
parent::__construct();
}

public function get_test(){
$query = "Myproc 'param1', 'param2', 'param3'";
$rs = $this->db->query($query)->result_array(); //code stop here
print_r($rs);
die();
}
}

-1

Решение

В Codeigniter я пропустил ORM и вызвал процедуры хранения SQL Server, используя PDO.

// This is the Model

class Xm_system_model extends CI_Model {

protected $pdo;

public function __construct() {
parent::__construct();

// variables dsn, db_username, and db_password are stored in a config file
// that's autoloaded.

$this->pdo = new PDO($this->config->item('dsn'), $this->config->item('db_username'), $this->config->item('db_password'));

}// This is a function that calls a sproc using two string parameters.

// (Notice the appalling lack of user input validating
// and error catching. IKR?)

public function get_screens($xlogin = '', $xsystem = '') {

$result = array();

$sql = "exec xs_GetScreens ?, ?";

$param1 = $xlogin;
$param2 = $xsystem;

$ds = $this->pdo->prepare($sql);

$ds->bindParam(1, $param1, PDO::PARAM_STR);
$ds->bindParam(2, $param2, PDO::PARAM_STR);

$ds->execute();

$result = $ds->fetchAll(PDO::FETCH_NUM);

return $result;
}
}

Звонок с контроллера …

public function screens() {

$this->load->model('xm_system_model');

$this->view_data['screen_list'] = $this->xm_system_model->get_screens($xlogin, $xsystem);

$this->load->view("some_view_name", $this->view_data);
}
0

Другие решения

Я вставил этот код, и он работал
УСТАНАВЛИВАЙТЕ NOCOUNT ON;

public function get_screens($xlogin = '', $xsystem = '') {

$result = array();

$sql = "SET NOCOUNT ON;
exec xs_GetScreens ?, ?
";

$param1 = $xlogin;
$param2 = $xsystem;

$ds = $this->pdo->prepare($sql);

$ds->bindParam(1, $param1, PDO::PARAM_STR);
$ds->bindParam(2, $param2, PDO::PARAM_STR);

$ds->execute();

$result = $ds->fetchAll(PDO::FETCH_NUM);

return $result;
}
}
0

По вопросам рекламы [email protected]