在MySQL数据库中,我有一个表名data
。在此表中有多个文件。
目前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 :(得分:2)
从
更改您的查询"UPDATE `data` SET `field1` = 1 WHERE `key` = (?)"
到
"UPDATE `data` SET `field1` = 1 WHERE `key` = ?"
因为如果在现有查询中绑定参数,那么它将返回类似(2)
的内容,这在您的数据库中肯定不匹配。
答案 1 :(得分:2)
在查询中删除()
是错误的SQL语法:
stmt = $mysqli->prepare("UPDATE `data` SET `field1` = 1 WHERE `key` = ?")
此外,您应该在执行SQL查询后检查错误。 请参阅here如何使用mysqli_error执行此操作。
答案 2 :(得分:2)
很久以前我也遇到了同样的情况。我所做的只是select
首先检查记录是否需要更新。另请参阅this和this accepted answer