如何在 codeigniter 代码中使用两个或多个存储过程?
Posted
技术标签:
【中文标题】如何在 codeigniter 代码中使用两个或多个存储过程?【英文标题】:How to use two or more stored procedures in codeigniter code? 【发布时间】:2018-04-07 10:47:56 【问题描述】:我正在处理Codeigniter
项目,我正在使用stored procedures
进行后端操作。当我对SELECT
语句使用单个stored procedure
时,它会正常工作。但是当我尝试为相同的操作调用两个或多个stored procedures
时,它会给我一个错误。
错误:
发生数据库错误
错误号:2014
命令不同步;你现在不能运行这个命令
调用 all_Cluster()
文件名:C:/xampp/htdocs/prop/system/database/DB_driver.php
行号:691
这是我的代码:
型号:
public function getProperty()
$query = $this->db->query('call select_prop_SP()');
// if ($query->num_rows() > 0)
return $query->result();
$query->next_result();
$query->free_result();
public function area()
$query = $this->db->query('call select_area_SP()');
// if ($query->num_rows() > 0)
return $query->result();
$query->next_result();
$query->free_result();
public function cluster()
$query = $this->db->query('call select_Cluster_SP()');
// if ($query->num_rows() > 0)
return $query->result();
$query->next_result();
$query->free_result();
这是我的 SP:
select_area_SP
BEGIN
SELECT `area_id`, `area_name`, `area_status` FROM `tbl_area`;
END
select_Cluster_SP
BEGIN
SELECT `cluster_id`, `cluster_name`, `area_id`, `cluster_status` FROM `tbl_cluster`;
END
我已经用谷歌搜索了很长时间,但我还没有发现任何积极的结果。 我已经通过Calling stored procedure in codeigniter 并进行所有更改,但没有成功。
感谢任何形式的帮助。提前致谢。
【问题讨论】:
dev.mysql.com/doc/refman/5.7/en/commands-out-of-sync.html 【参考方案1】:next_result
和 free_result
函数未执行,因为 return
语句退出函数。您必须在返回之前将结果存储在临时变量中:
public function cluster()
$query = $this->db->query('call select_Cluster_SP()');
$result = $query->result();
$query->next_result();
$query->free_result();
return $result;
或将您的配置更改为 mysqli
驱动程序,该驱动程序在每次存储过程调用后包含 next_result 函数:
$db['default']['dbdriver'] = 'mysqli';
【讨论】:
看起来它给出了一个错误Call to undefined method CI_DB_mysqli_result::next_result()
以上是关于如何在 codeigniter 代码中使用两个或多个存储过程?的主要内容,如果未能解决你的问题,请参考以下文章
如何在codeigniter中使用两个不同的表只显示一次数据
如何将自动完成修复到与 Codeigniter 一起出现的两个数据库中?