如果以前有人問過這個問題,我很抱歉,但是我很長一段時間找不到答案。PDO如何獲取MySQL數據庫中INSERT的重複鍵列名稱?
問題是,當試圖在具有多個UNIQUE鍵的MySQL表中插入一行時。如果我們採取以下表作爲參考:
----------------------------------------
| id | username | email |
----------------------------------------
| 1 | myuser | [email protected] |
----------------------------------------
兩個用戶名和電子郵件是唯一鍵。如果我使用username ='myuser'運行查詢來插入新行,那麼重複條目和消息中的某些文本會出現1062錯誤,說明ID 3的密鑰是重複的。事情是這樣的:
array(3) {
[0]=>
string(5) "23000"
[1]=>
int(1062)
[2]=>
string(34) "Duplicate entry 'myuser' for key 3"
}
是否有PDO的方式得到重複列的名稱,這樣我就可以顯示出她的需要,因爲這個錯誤的改變這領域的用戶?
因爲情況是這兩個字段可以重複,或者只是第一個/第二個,我需要告訴用戶確切地是哪個字段。
我認爲解析短信和硬編碼密鑰的ID,但有人可以在明天更改數據庫中的密鑰,放下密鑰或添加一個新密鑰,並且該密鑰號似乎不是一個可靠的來源的信息。
或者最好的選擇是選擇所有的值,在INSERT之前檢查它們的鍵?
謝謝!
這個錯誤信息是否真實?我發現「對於關鍵3」部分有點奇怪的原因,它應該說用戶名......我想。 – softarn 2012-01-12 15:21:51
是的,這是真的。 – middlehut 2012-01-12 15:30:25