本文演示了PHP如何
执行多个存储过程:
从以前使用本机代码时,只需
关闭结果集,即
这queryid美元-> ->(关闭);
使用mysqli
方法,
修改dbmysqli.class.php,改变
查询功能:
公共
函数查询($ STR){
这initconnect美元(假);
如果(美元-> _linkid {!)
返回false;
}
美元-> querystr = str;
上一个查询结果释放
如果($,queryid)
$ >(免费);
n('db_query ',1);
开始记录执行时间
G('querystarttime);
queryid =美元->美元-> _linkid ->查询($str);
对存储过程的改进
$ =数组();
$ >(调试);
如果(假=美元,queryid){
$ >(
错误);
返回false;
{人}
numrows =美元->美元-> queryid -> num_rows;
numcols =美元->美元-> queryid -> field_count;
ret =美元美元->(得到);
}
主移动,关闭结果集
如果(美元-> _linkid ->(more_results)){
而(($ RES =美元-> _linkid -> next_result())!= NULL){
这queryid美元-> ->(关闭);
}
}
返回$;
}
可以在下面调用一些存储过程,也可以执行其他SQL
操作,并且m函数可以直接使用。
使用ThinkPHP时,我们
发现,执行多个存储过程只能执行一。查看源代码驱动 / / dbmysql.class分贝,我们
处理的存储过程,但是我们不知道为什么它不能
运行。
用本机代码
解决问题(以下代码部分):
$ db =新mysqli(C(db_host )、C(db_user )、C(db_pwd )、C(db_name ));
如果(mysqli_connect_errno())
throw_exception(mysqli_connect_error());
$ T2 =瞬时(真的);
数据库
连接时间:。(((T2 - T1美元))。;
ARR =阵列(美元);
第一查询
过程 调用P1();
$结果= $ > >查询($过程);
如果(结果){
通过结果循环
而($行= $结果-> fetch_object()){
添加到对象数组中
ARR { } = $行美元;
}
这里是最重要的,需要移动光标下一组结果
$结果>关闭();
DB—> next_result(美元);
}
$过程调用P2();
$结果= $ > >查询($过程);
如果(结果){
通过结果循环
而($行= $结果-> fetch_object()){
添加到对象数组中
ARR { } = $行美元;
}
这里是最重要的,需要移动光标下一组结果
$结果>关闭();
DB—> next_result(美元);
}
更多的读者感兴趣的ThinkPHP相关内容可以看到这个
网站的主题:ThinkPHP入门
教程 希望本文有助于基于ThinkPHP框架的PHP
程序设计人。