从 Codeigniter 调用多个存储过程,最后结果包含前一个
Call multiple stored procedures from Codeigniter last result contains the previous
我在 Codeigniter 中使用这个库从存储过程中检索多个结果集:
class Multi_Results
{
private $CI, $Data, $mysqli, $ResultSet;
/**
* The constructor
*/
function __construct()
{
$this->CI =& get_instance();
$this->Data = '';
$this->ResultSet = array();
$this->mysqli = $this->CI->db->conn_id;
}
public function GetMultiResults($SqlCommand)
{
/* execute multi query */
if (mysqli_multi_query($this->mysqli, $SqlCommand)) {
$i=1;
do
{
if ($result = $this->mysqli->store_result())
{
while ($row = $result->fetch_assoc())
{
$this->Data[$i][] = $row;
}
mysqli_free_result($result);
}
$i++;
}
while ($this->mysqli->more_results() && $this->mysqli->next_result());
}
return $this->Data;
}
}
我正在从控制器调用程序,例如
$result_array = $this->multi_results->GetMultiResults("CALL procedure_name($input_1, '$input_2')");
它做了它应该做的。当我一个接一个地从控制器调用 2 个不同的过程并将结果分配给不同的变量时,问题就出现了。
当我 var_dump 第二个(最后一个)结果时,它还包含第一个结果的结果集。
我检查了 database.php 中的连接 dbdriver(它设置为 MSQLI),我尝试实施一些建议,例如:
CodeIgniter active records' problems calling multiple stored procedures and Calling a stored procedure from CodeIgniter's Active Record class
他们都提出了一个 'mysqli_free_result' 的解决方案,但是已经在插件库中完成了(正如您在上面的代码片段中看到的那样)。
任何建议将不胜感激!
启动 $this->data = ''
函数 GetMultiResults() 而不是构造函数。
我想这会解决你的问题。
我在 Codeigniter 中使用这个库从存储过程中检索多个结果集:
class Multi_Results
{
private $CI, $Data, $mysqli, $ResultSet;
/**
* The constructor
*/
function __construct()
{
$this->CI =& get_instance();
$this->Data = '';
$this->ResultSet = array();
$this->mysqli = $this->CI->db->conn_id;
}
public function GetMultiResults($SqlCommand)
{
/* execute multi query */
if (mysqli_multi_query($this->mysqli, $SqlCommand)) {
$i=1;
do
{
if ($result = $this->mysqli->store_result())
{
while ($row = $result->fetch_assoc())
{
$this->Data[$i][] = $row;
}
mysqli_free_result($result);
}
$i++;
}
while ($this->mysqli->more_results() && $this->mysqli->next_result());
}
return $this->Data;
}
}
我正在从控制器调用程序,例如
$result_array = $this->multi_results->GetMultiResults("CALL procedure_name($input_1, '$input_2')");
它做了它应该做的。当我一个接一个地从控制器调用 2 个不同的过程并将结果分配给不同的变量时,问题就出现了。 当我 var_dump 第二个(最后一个)结果时,它还包含第一个结果的结果集。 我检查了 database.php 中的连接 dbdriver(它设置为 MSQLI),我尝试实施一些建议,例如: CodeIgniter active records' problems calling multiple stored procedures and Calling a stored procedure from CodeIgniter's Active Record class 他们都提出了一个 'mysqli_free_result' 的解决方案,但是已经在插件库中完成了(正如您在上面的代码片段中看到的那样)。
任何建议将不胜感激!
启动 $this->data = ''
函数 GetMultiResults() 而不是构造函数。
我想这会解决你的问题。