2011-05-14 45 views
6

我想知道我該如何處理由PDO類中可用的DataBase驅動程序返回的錯誤聲明。當數據庫返回一個錯誤聲明時處理PDOException

舉例來說,讓我們以UNIQUE字段作爲研究案例。如您所知,至少在PDO的調試模式處於活動狀態時,當嘗試添加數據庫的UNIQUE字段中重複的內容時,我們會收到PDOException。

我想知道處理這個問題的正確方法是什麼。我搜索一下吧,我已經得到了這一點:

try { 

    // PDO::prepare(), PDOStatement::execute e etc. 

} catch(PDOException $e) { 

    if($e -> getCode() == 23000) { 
     // Do something 
    } 
} 

但我不知道這是否是正確的,並思想爲程序員,這真的是一個很好的做法?我的意思是,依靠錯誤代碼?

更糟的是:PDO接受多個驅動程序,它們都共享相同的錯誤代碼?

當然這不是唯一的情況。還有其他幾個錯誤代碼,對吧?這種「技術」可以用於所有情況?

回答

3

看過http://php.net/manual/en/class.pdoexception.php之後,我覺得你可能需要依靠$e->getMessage()找出錯誤是什麼。

通過其中一個帖子provided進行閱讀,您可能需要從消息中提取正確的錯誤代碼。

PDO似乎已被編程在一個相當怪異的方式!但是在處理多種數據庫類型時,它仍然是非常寶貴的!

+0

我認爲這是更安全的查詢現有的結果,然後檢查它是否存在與否。 – 2011-05-19 11:21:31