2010-06-28 129 views
0

我正在開發基於PDO的ORM,對於沒有唯一ID字段的表,因此當我更新或刪除時,我需要與記錄的以前的值進行比較,並且LIMIT 1PDO編寫的語句不更新表

當我的查詢最終到達數據庫,並與參數執行,一切都是正確的,一般查詢日誌確認,但是,什麼都沒有發生

我沒有得到任何例外拋出(PDO::ERRMODE_EXCEPTION是打開),並檢查$stmt->errorInfo()回來乾淨,但$stmt->rowCount()返回0

作爲完整性檢查,我打開日誌文件,將UPDATE查詢右鍵複製並粘貼到Sequel Pro(OSX MySQL GUI)中並執行,並且所有內容都按預期工作,更新了1行。

爲什麼PDO不更新該行,當手動執行IDENTICAL查詢呢?

+0

你可能會顯示不工作的代碼? – 2010-06-28 14:43:41

+0

可能重複的[PHP的PDO準備語句查詢不更新記錄](http://stackoverflow.com/questions/2124294/php-pdo-prepared-statement-query-not-updating-record) – 2010-06-28 14:45:47

+0

@ Bill:它不是。我檢查了。問題在於他們引用了他們的佔位符。 – 2010-06-28 14:49:00

回答

2

的問題是,我的代碼生成使用

WHERE `FieldName` = NULL 

時,它應該是

WHERE `FieldName` IS NULL 

當PDO執行時,它保持了= NULL,沒有造成記錄進行匹配查詢,但是當MySQL記錄它時,它記錄了IS NULL,所以當我複製/粘貼時,查詢是正確的並更新了該行。