2013-04-12 94 views
1

我正在使用PHP和PDO連接到我的MySQL數據庫。我配置的PDO連接,使我得到任何MySQL錯誤拋出的異常:與PHP獲取MySQL錯誤代碼

$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

現在讓我們假設我執行生成錯誤一個MySQL的命令,我抓住它,該錯誤信息是這樣的:

SQLSTATE [23000]:完整性約束衝突:當我使用$exception->getCode()返回23000,我認爲這是從PHP或東西1048列「名稱」不能爲空

。如何在catch塊中獲取特定的MySQL錯誤(1048)?

+0

如果你們對我的問題有任何疑問,請問。我不知道它是否真的能做到這一點。我必須使用SQL來編寫錯誤處理嗎? – user937450

回答

5

A PDOException對象有一個屬性errorInfo這是一個三元素數組,同樣由PDO::errorInfo()返回。 MySQL的錯誤代碼是元素1

try { 
    . . . 
} catch (PDOException $e) 
    $errorInfo = $e->errorInfo; 
    error_log "MySQL error " . $errorInfo[1] . "\n"; 
} 

PS:請注意,只是附和錯誤是不恰當的異常處理,我只是這樣做,來說明如何訪問信息。

3

由於您使用的是PDO,因此您可以參考here,其中提供了有關如何從SQL獲取錯誤信息的極好說明和示例。