2011-10-21 64 views
1

我們使用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::preparePDOStatement::execute失敗。

查詢:

select simpleupdatestoredprocedure(15, 'loooong string'); 

函數調用:

function _execute($sql) 
{ 
    $q = $this->conn->prepare($sql); 
    $q->execute(); 

    return $q; 
} 

哪裏$this->conn是主要的PDO對象,$qPDOStatement對象。 (我們不在這部分代碼中使用任何CodeIgniter特定的東西。)

是否有一些隱藏的設置限制了可以傳遞的數據或查詢的長度? 如有必要,我們會在發生此問題時找到確切的字節數。

回答

0

您是否嘗試過捕獲任何異常?我在Oracle PDO驅動程序中遇到了同樣的問題,它在某處超出了某個緩衝區。雖然Oracle是實驗性的,所以它可能是預期的。你有沒有檢查你的PHP錯誤日誌?