2011-06-27 69 views
0
$sql = "dSELECT * FROM users"; 
$dbQuery = $this->dbal->query($sql); 
$dbError = $this->dbal->errorInfo(); 

$ dbError獲取語法錯誤信息。PDO errorCode不適用於準備

如果準備好的語句使用相同的語句,它在準備後不會返回任何錯誤。

此代碼是從php.net

<?php 
/* Provoke an error -- bogus SQL syntax */ 
$stmt = $dbh->prepare('bogus sql'); 
if (!$stmt) { 
    echo "\nPDO::errorInfo():\n"; 
    print_r($dbh->errorInfo()); 
} 

ERRORINFO不會以這種方式工作。 我用

$dbQuery = $this->dbal->prequery($sql); 
$dbError = $dbQuery->errorInfo(); // $this->dbal->errorInfo(); doesn't work, too. 
+1

你試過[這個答案](http://stackoverflow.com/questions/6263443/pdo-connection-test/6263868#6263868)? –

+0

嘗試過,但沒有這個工作。實際上默認模式是默認情況下,它與dbal->查詢。 –

+0

當我使用: $ this-> dbal-> setAttribute(\ PDO :: ATTR_ERRMODE,\ PDO :: ERRMODE_EXCEPTION); var_dump(\ PDO :: ATTR_ERRMODE);每次返回3.SILENT,警告或異常返回3。 –

回答

0

manual說:

如果數據庫服務器成功 準備的發言,PDO ::準備() 返回一個PDOStatement對象的對象。如果 數據庫服務器無法成功準備 語句,則PDO :: prepare() 返回FALSE或發出PDOException (取決於錯誤處理)。

這意味着當它失敗時沒有對象:您有一個布爾值FALSE

嘗試將PDO error handling更改爲PDO::ERRMODE_EXCEPTION