我們使用PHP 5.3.2,Ubuntu,MySQL 5.1.41,CodeIgniter 2.0.0和簡單的PDO驅動程序。PHP PDO長的sql語句無響應
問題是如果我們在查詢中發送一個長字符串(大小約爲11,12KB),既不是PHP,也不會返回任何錯誤或響應。 沒有語法錯誤,沒有警告,沒有HTTP錯誤,沒有任何東西。 PHP只是保持「掛起」狀態。
如果數據字符串比較短几千字節,查詢就會運行並且數據會正確插入到數據庫中。
我們相信MySQL甚至不會收到我們發送的查詢,如果它大於〜11kbytes。
PDO::prepare
或PDOStatement::execute
失敗。
查詢:
select simpleupdatestoredprocedure(15, 'loooong string');
函數調用:
function _execute($sql)
{
$q = $this->conn->prepare($sql);
$q->execute();
return $q;
}
哪裏$this->conn
是主要的PDO對象,$q
是PDOStatement
對象。 (我們不在這部分代碼中使用任何CodeIgniter特定的東西。)
是否有一些隱藏的設置限制了可以傳遞的數據或查詢的長度? 如有必要,我們會在發生此問題時找到確切的字節數。