codeigniter mysql 存储过程_Codeigniter 使用 Mysql 存储过程
发布日期:2021-06-24 17:07:58 浏览次数:2 分类:技术文章

本文共 996 字,大约阅读时间需要 3 分钟。

执行存储过程

$query = $this -> db -> query('CALL YOU_SP_NAME');

$result = $query -> result();

这个问题不大,就像是执行普通 SQL 语句一样。

使用存储过程遇到的问题

在用了存储过程之后,发现数据库链接并不能使用 持续链接,即 需要把 database.php 里的 $db['pconnect'] 设置为 FALSE,否则会出现链接数据库失败的错误。

另外,当执行完存储过程之后,如果再执行其它的数据库查询,会出现 Commands out of sync; you can't run this command now 错误。

查了下原因,据说是因为执行完存储过程后,没有将结果集给释放掉

CI 中可以通过重连数据库的方法解决:

$this -> db -> reconnect();

如何获得多个结果集

主要是使用 Mysqli 的 multi_query() 来获得

关键代码如下:

$mysqli = new mysqli('localhost', 'USERNAME', 'PASSWORD', 'DBNAME');

$mysqli -> query("SET NAMES utf8");

/* check connection */

if (mysqli_connect_errno()) {

printf('Connect failed: %s\n', mysqli_connect_error());

exit();

}

$query = 'CALL YOU_SP_NAME';

/* execute multi query */

if ($mysqli -> multi_query($query)) {

do {

/* store first result set */

if ($result = $mysqli -> store_result()) {

while ($row = $result -> fetch_all()) {

$all_result[] = $row;

}

$result -> free();

}

}

while ($mysqli -> next_result());

}

/* close connection */

$mysqli -> close();

转载地址:https://blog.csdn.net/weixin_34007963/article/details/113332147 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql having过滤_Mysql中having筛选
下一篇:安卓viewpager 滑动嵌套viewpager_疑难问题:解决SwipeRefreshLayout和ViewPager滑动冲突的三种方案...

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月19日 06时06分27秒