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

具有相同数据的php mysqli更新表返回0个受影响的行,php,mysql,mysqli,Php,Mysql,Mysqli,在MySQL数据库中,我有一个表名data。此表中有多个文件 目前,Field1将test作为值。现在,用户想要更新表,他将测试放入值中 我的查询失败,因为您可以看到echo“数据库已更新”未执行 似乎受影响的行返回0 $stmt = $mysqli->prepare("UPDATE `data` SET `field1` = 'test' WHERE `key` = ?") $stmt->bind_param("s", $mykey); $stmt->execute();

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

目前,
Field1
test
作为值。现在,用户想要更新表,他将
测试
放入值中

我的查询失败,因为您可以看到
echo“数据库已更新”
未执行

似乎受影响的行返回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."
    }
我想知道如何设计此查询以使其正常工作。如果新值与现有值相同


谢谢。

将您的查询从

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


因为如果您在现有查询中绑定参数,那么它将返回类似以下内容的内容
(2)
,这在您的数据库中肯定不匹配。

将您的查询从

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

因为如果您在现有查询中绑定参数,那么它将返回类似以下内容的内容
(2)
,这在您的数据库中肯定不匹配。

在您的查询中删除
()
是错误的SQL语法:

stmt = $mysqli->prepare("UPDATE `data` SET `field1` = 1 WHERE `key` = ?")
您还应该在执行SQL查询后检查错误。 查看如何处理mysqli_错误。

删除查询中的
()
是错误的SQL语法:

stmt = $mysqli->prepare("UPDATE `data` SET `field1` = 1 WHERE `key` = ?")
您还应该在执行SQL查询后检查错误。

看看如何处理mysqli_错误。

很久以前我也遇到过同样的情况。我所做的只是先选择记录,检查它是否需要更新。另请参见和

很久以前我也遇到过同样的情况。我所做的只是先选择记录,检查它是否需要更新。另请参见和

谢谢您的回答。我非常感谢你的回答。我非常感谢你的回答。投票通过接受未来访客的答案。感谢您的回答。投票决定接受未来来访者的答案。这是瓦尔查。我刚刚给了你一些数据,这是正确的行为。看。谢谢你的否决票。@roullie你完全正确。谢谢你的链接。你可以把它贴在答题纸上。所以,我可以接受这个答案。@404根据要求回答如下。它是VARCHAR。我刚刚给了你一些数据,这是正确的行为。看。谢谢你的否决票。@roullie你完全正确。谢谢你的链接。你可以把它贴在答题纸上。所以,我可以接受这一回答。@404按要求回答如下。