具有相同数据的php mysqli更新表返回0受影响的行

时间:2016-02-11 08:16:28

标签: php mysql mysqli

在MySQL数据库中,我有一个表名data。在此表中有多个文件。

目前Field1test作为值。现在,用户想要更新表格,并将 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."
    }

我想知道如何设计此查询才能正常工作。如果新值与现有值相同。

感谢。

3 个答案:

答案 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首先检查记录是否需要更新。另请参阅thisthis accepted answer