php执行多个存储过程的方法【基于thinkPHP】

php执行多个存储过程的方法【基于thinkPHP】,第1张

概述这篇文章主要介绍了php执行多个存储过程的方法,结合实例形式分析了基于thinkPHP框架调用多个存储过程的相关 *** 作技巧,需要的朋友可以参考下

本文实例讲述了PHP执行多个存储过程的方法。分享给大家供大家参考,具体如下:

从以前的使用原生代码来看,只需要将结果集关闭即可,即

queryID -> close();

使用MysqLi方式,修改DbMysqLi.class.PHP,将query函数改为:

initConnect(false); if (!$this -> _linkID) { return false; } $this -> queryStr = $str; //释放前次的查询结果 if ($this -> queryID) $this -> free(); N('db_query',1); // 记录开始执行时间 G('queryStartTime'); $this -> queryID = $this -> _linkID -> query($str); // 对存储过程改进 $ret = array(); $this -> deBUG(); if (false === $this -> queryID) { $this -> error(); return false; } else { $this -> numRows = $this -> queryID -> num_rows; $this -> numCols = $this -> queryID -> fIEld_count; $ret = $this -> getAll(); } //主要将这段移动了一下,关闭结果集 if ($this -> _linkID -> more_results()) { while (($res = $this -> _linkID -> next_result()) != NulL) { $this -> queryID -> close(); } } return $ret ;}

下面就可以调用多个存储过程,或许执行其他sql *** 作,可以直接使用M函数

在使用thinkPHP的时候发现执行多个存储过程只能执行第一个,看了一下源码Driver/Db/DbMysqL.class,已经对存储过程进行了一定处理,但是不知道为什么运行不了。

用原生代码解决了问题(下面是部分代码):

";$arr = array();// 1st query$procedure = "call p1()";$result = $db->query($procedure);if ($result) {// Cycle through resultswhile ($row = $result->fetch_object()) {//添加到对象数组$arr[] = $row;}// 这里是最重要的,需要将游标移动下一个结果集$result->close();$db->next_result();}$procedure = "call p2()";$result = $db->query($procedure);if ($result) {// Cycle through resultswhile ($row = $result->fetch_object()) {//添加到对象数组$arr[] = $row;}// 这里是最重要的,需要将游标移动下一个结果集$result->close();$db->next_result();}

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《href="//www.jb51.cc/Special/350.htm">PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

总结

以上是内存溢出为你收集整理的php执行多个存储过程的方法【基于thinkPHP】全部内容,希望文章能够帮你解决php执行多个存储过程的方法【基于thinkPHP】所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1244036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存