2016-02-11 56 views
1

在MySQL數據庫中,我有一個表名稱data。在這個表中有多個文件。php mysqli具有相同數據返回的更新表0受影響的行

目前Field1的值爲test。現在用戶想要更新表格,並且他將test包含在值中。

我的查詢失敗,因爲您可以看到echo "Database updated"未執行。

好像受影響的行返回0

$stmt = $mysqli->prepare("UPDATE `data` SET `field1` = 'test' WHERE `key` = ?") 
$stmt->bind_param("s", $mykey); 
$stmt->execute(); 

$nrows = $stmt->affected_rows; 
if ($nrows== 1) { 
echo "Database updated." 
    } 

我想知道我如何設計這個查詢才能正常工作。如果新值與現有值相同。

謝謝。

+0

它是VARCHAR。我剛給你提供樣品數據。 – Ironic

+2

這是正確的行爲。看[這個接受的答案](http://stackoverflow.com/questions/2186887/mysql-update-query-returns-0-rows-affected)。 – roullie

+0

感謝您的投票。 – Ironic

回答

2

"UPDATE `data` SET `field1` = 1 WHERE `key` = (?)" 

更改查詢

"UPDATE `data` SET `field1` = 1 WHERE `key` = ?" 

因爲如果你在現有的查詢綁定參數,那麼它會返回這樣的事情(2),這絕對不會在你的數據庫匹配。

+0

感謝您的回答。投票 – Ironic

+0

接受未來訪問者的答案。 –

+0

等待某人對downvote發表評論。 – Ironic

2

刪除()在您的查詢是錯誤的SQL語法:

stmt = $mysqli->prepare("UPDATE `data` SET `field1` = 1 WHERE `key` = ?") 

您也應該檢查執行SQL查詢後錯誤。 請參閱here如何使用mysqli_error完成此操作。

+0

感謝您的回答。投了票 – Ironic

相關問題