標籤:class input ram error 迴圈 access dos lstat call
這個報錯是調用預存程序的時候產生的,用的是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
原因:
在 \thinkphp\library\think\db\Connection.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錯誤