我正在使用具有mysqli作为db驱动程序的codeigniter,我试图从我的模型中调用一个简单的存储过程但是出错了。我做错了什么
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'pc()' at line 1
pc()
Filename: C:\hosted\saner.gy\ipa\system\database\DB_driver.php
Line Number: 330
当我运行查询调用存储过程时它运行良好但是从codeigniter它会引发上述错误
存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `pc`()
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
SELECT * FROM tbl_flo
WHERE name = 'sam';
END
控制器
public function sp()
{
$this->User_model->pc();
}
模型
public function pc()
{
$query = $this->db->query("pc()");
return $query->result();
}
答案 0 :(得分:5)
使用CALL procedure_name(optional_params)
查询调用存储过程。
您需要编辑模型中使用的查询,如下所示:
public function pc()
{
$query = $this->db->query("CALL pc()");
return $query->result();
}
答案 1 :(得分:2)
您正在使用以下方式呼叫程序。
$this->db->call_function('pc');
或者您也可以使用此
$this->db->query("call pc()");
答案 2 :(得分:2)
这是老兄,这个代码块在模型中为我工作
function get_sunmeter_for_initiator($data){
try {
$this->db->reconnect();
$sql = "CALL `get_sunmeter_for_initiator`(?, ?, ?)";
$result = $this->db->query($sql,$data); // $data included 3 param and binding & query to db
$this->db->close();
} catch (Exception $e) {
echo $e->getMessage();
}
return $result;
}