Php MYSQL更新只返回TRUE,不返回FALSE?
我用这个来更新一个表。Php MYSQL更新只返回TRUE,不返回FALSE?,php,mysql,pdo,Php,Mysql,Pdo,我用这个来更新一个表。validator是一个随机生成的20个字符的字符串,与其他变量一起用于验证数据的有效性 在我看来,如果Validator和FixtureID匹配同一行,则表应该只更新Response +-----------+----------------------+----------+ | FixtureID | Validator | Response | +-----------+----------------------+----------+ |
validator
是一个随机生成的20个字符的字符串,与其他变量一起用于验证数据的有效性
在我看来,如果Validator
和FixtureID
匹配同一行,则表应该只更新Response
+-----------+----------------------+----------+
| FixtureID | Validator | Response |
+-----------+----------------------+----------+
| 1 | 9eb593bd154b655019ad | U |
| 1 | 4b80ac0ac204be8968e4 | U |
| 2 | a2d278612994d3010595 | U |
| 2 | c01171d690d5dfb141ff | U |
| 3 | 22cd6e5b7f6dd6e76366 | U |
//PHP脚本
$query = "
UPDATE
invites
SET
Response=:response
WHERE
Validator=:validator
AND
FixtureID=:FixtureID
";
$query_params = array(
':response'=>'Y',
':FixtureID'=>'1',
':validator'=>'9eb593bd154b655019ad'
);
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
if ( $result ) {
echo 'Success';
} else {
echo 'Invalid';
}
但是,我可以将验证器更改为x
,$result
仍然返回true
我真的很想知道为什么会发生这种情况?
非常感谢。它返回
true
,因为您的查询已成功运行。事实上,它没有改变数据库中的任何内容并不重要
$count = $stmt->rowCount();
if ( $count > 0 ) {
echo 'Updated';
} else {
echo 'Not updated';
}
PDO无法猜测您想要的至少是一个更新。它运行查询,如果没有错误,则查询成功
如果你需要你的应用程序来处理这些情况,你可能需要考虑首先运行<代码>选择计数(*)<代码> >相同的<代码> 条件,并向用户报告没有更新的内容。
< p>它返回<代码>真< /代码>,因为您的查询已成功运行。事实上,它没有改变数据库中的任何内容并不重要 PDO无法猜测您想要的至少是一个更新。它运行查询,如果没有错误,则查询成功如果你需要你的应用程序来处理这种情况,你可能需要考虑首先运行<代码>选择计数(*)<代码> >相同的<代码> < < /C> >条件,并向用户报告没有更新。
如果有错误,它只返回<代码> false <代码>。没有更新任何内容时不是错误。:响应'=>'Y',
?您的列显示U
。这是一个关于行为的问题吗?因此,即使没有FixtureID
和Validator
同时存在的行,这也不被认为是一个错误,或者“False”?哎呀,我只是看到了mysql
标记并很快回答了。。。在本例中,您将检查rowCount()
我看不出这个问题被忽略的原因。如果有错误,它只返回FALSE
。没有更新任何内容时不是错误。:响应'=>'Y',
?您的列显示U
。这是一个关于行为的问题吗?因此,即使没有FixtureID
和Validator
同时存在的行,这也不被认为是一个错误,或者“False”?哎呀,我只是看到了mysql
标记并很快回答了。。。在本例中,您将检查rowCount()
我看不出此问题被忽略的原因,而此代码可能会回答此问题,并提供有关此代码为什么和/或如何回答此问题的其他上下文,以提高其长期价值。虽然此代码可能会回答此问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。