ThinkPHP 2053错误
Posted wcu1117
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP 2053错误相关的知识,希望对你有一定的参考价值。
这个报错是调用存储过程的时候产生的,用的是5.1的代码是根据官方文档写的,我怀疑5.0也有这个问题。去官方查了一下发现不少人有这个问题,但是官方都没有回应过,只能自己动手一步步调了。
$center = input(‘c‘,1);
$outParam = null;
$data = Db::query(‘call get_day(:in_param2)‘,[
‘in_param2‘ => [&$center, PDO::PARAM_INT],
]);
注意这里的变量要用引用的方式
TP5.1 报错 SQLSTATE[HY000]: General error: 2053
原因:
在 hinkphplibrary hinkdbConnection.php 里面有这么一个获取存储过程结果的函数
/** * 获得存储过程数据集 * @access protected * @return array */ protected function procedure() { $item = []; do { $result = $this->getResult(); if ($result) { $item[] = $result; } } while ($this->PDOStatement->nextRowset()); $this->numRows = count($item); return $item; }
我打印出来
$this->getResult();
返回的结果集就是一个,但是这里又判断循环是否下一行,我怀疑就是这里出错了。把这里获取结果集直接返回就可以了
/** * 获得存储过程数据集 * @access protected * @return array */ protected function procedure() { $result = $this->getResult(); $this->numRows = count($result); return $result; }
以上是关于ThinkPHP 2053错误的主要内容,如果未能解决你的问题,请参考以下文章
光学基于matlab色散曲线拟合含Matlab源码 2053期