最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Codeigniter框架使用Mysql存储过程的例子
时间:2022-06-25 00:50:20 编辑:袖梨 来源:一聚教程网
执行存储过程
$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: %sn', 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();
相关文章
- 金铲铲之战S11青花瓷拉克丝阵容怎么搭配 04-20
- 明日方舟BB-EX-6突袭攻略 04-20
- 明日方舟BB-EX-6突袭攻略 明日方舟BB-EX-6突袭怎么打 04-20
- 金铲铲之战S11青花瓷拉克丝阵容怎么搭配 金铲铲之战S11青花瓷拉克丝阵容选择推荐 04-20
- 欢乐钓鱼大师刀疤鱼怎么钓 04-20
- 塞尔达传说王国之泪石头人心脏作用是什么 04-20