我在寫一些使用帶有MySQL的PDO的代碼,需要非常確定UPDATE
是否成功。如果MySQL查詢失敗,PDO的`rowCount()`返回什麼?
我希望更新1行,並且我使用PDO的rowCount()
方法檢查返回值爲1.如果1行或0行受到影響(「更新」或「未更新」),則I知道做什麼。
這可以以任何方式出錯嗎?例如,如果查詢無法執行,它會返回什麼?如果數據庫以某種方式損壞或摔倒,該怎麼辦?
我在寫一些使用帶有MySQL的PDO的代碼,需要非常確定UPDATE
是否成功。如果MySQL查詢失敗,PDO的`rowCount()`返回什麼?
我希望更新1行,並且我使用PDO的rowCount()
方法檢查返回值爲1.如果1行或0行受到影響(「更新」或「未更新」),則I知道做什麼。
這可以以任何方式出錯嗎?例如,如果查詢無法執行,它會返回什麼?如果數據庫以某種方式損壞或摔倒,該怎麼辦?
在一個正確編寫的應用程序中,它永遠不會被執行 - 觸發異常並且處理程序只會殺死整個腳本。
如果查詢失敗execute將返回false。如果成功返回值會影響行數。它可以是> = 0。不要使用rowCount時的那豈不是更好,檢查是否更新沒有發生或沒有,因爲它應該總是返回一行,除非查詢失敗(由於錯誤)
sqrt(-1) loves php
「它應該總是返回一行,除非查詢失敗」在我的情況下,還是總是? 'UPDATE ... WHERE'可以更新N行,所以'rowCount'應該返回N,對嗎? –
在更新的情況下 - 永遠。如果你會有呃,那會是假的。語法錯誤或對現有表格的引用等。 至於你的評論,不完全是。例如,如果您將使用相同的數據更新行(因此行實際上不會被修改),受影響的行計數將爲0.但通常情況是,它會返回修改行的計數。我認爲應該有第二行應該指出有多少行由where子句匹配 - 如果mysql工作臺知道這意味着DBMS必須提供這樣的響應信息,但我從來沒有使用它。 – Antoniossss
檢查的返回值'execute()'並查看查詢是否以這種方式失敗? – andrewsi