教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 Codeigniter框架使用Mysql存储过程的例子

Codeigniter框架使用Mysql存储过程的例子

发布时间:2023-05-10   编辑:jiaochengji.com
教程集为您提供Codeigniter框架使用Mysql存储过程的例子等资源,欢迎您收藏本站,我们将为您提供最新的Codeigniter框架使用Mysql存储过程的例子资源
Codeigniter框架是一款非常好的php框架了,但很多朋友只限于它的常用使用了,如果要使用存储过程就不知道如何操作了,下面我们来看Codeigniter框架使用Mysql存储过程的例子,各位有兴趣可看看。

执行存储过程

$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();

您可能感兴趣的文章:
CodeIgniter的基本配置说明
CodeIgniter框架实例之过滤HTML危险代码
ci和thinkphp5哪个好
新浪SAE云平台如何使用codeigniter数据库配置?
CodeIgniter创建一个简单的注册系统
mysql call的用法 调用另一个存储教程
mysql functions实例:在存储过程中使用数学函数
分享:Mysql 5.0存储过程学习总结
CodeIgniter框架中启用和清除缓存的教程
mysql动态游标与mysql存储过程游标(示例)

[关闭]
~ ~