$M = new Model();
$sql = "call predurename(p0,p1)";
$res = $M->query($sql);
dump($res); // print null
首先说明predurename里面就是一条查询语句 select * from tabname;
在命令行调用是没有问题的,但是tp却不能返回结果;网上搜查了一番;
thinkphp对存储过程有点bug;
最简单的解决方法是:
找到 ThinkPHP/Lib/Driver/Db/DbMysql.class.php
/**
* 执行查询 返回数据集
* @access public
* @param string $str sql指令
* @return mixed
*/
public function query($str) {
// if(0===stripos($str, 'call')){ // 存储过程查询支持
// $this->close();
// $this->connected = false;
// }
$this->initConnect(false);
if ( !$this->_linkID ) return false;
$this->queryStr = $str;