Xav*_*bio 3 php mysql stored-procedures codeigniter
我有CI的这个工作代码:
$this->db->query("call nameOfProcedure('param1', @param2)");
$query = $this->db->query('SELECT @param2 as results');
$row = $query->row();
Run Code Online (Sandbox Code Playgroud)
它有效,但是如果我尝试使用:
$this->db->call_function('nameOfProcedure', 'param1', '@param2');
Run Code Online (Sandbox Code Playgroud)
我得到错误:
此功能不适用于您正在使用的数据库。
到底是怎么了?
谢谢
以防万一,它可以帮助任何人。我使用此库处理CI中的存储过程,它也支持多个结果集。
这是代码
我叫它 Mydb.php
<?php #if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Mydb
{
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=0;
do
{
if ($result = $this->mysqli->store_result())
{
while ($row = $result->fetch_assoc())
{
$this->Data[$i][] = $row;
}
mysqli_free_result($result);
}
$i++;
}
while ($this->mysqli->next_result());
}
return $this->Data;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
从控制器这样称呼它
$this->load->library('mydb');
$arr = $this->mydb->GetMultiResults("CALL GetReferrals()");
Run Code Online (Sandbox Code Playgroud)
另外,请确保mysqli将驱动程序设置为application/config/database.php
$db['default']['dbdriver'] = 'mysqli';
Run Code Online (Sandbox Code Playgroud)