当条件不满足时,为什么查询仍然运行?

时间:2019-01-16 04:14:07

标签: php mysql mysqli rows-affected

我得到了以下链接到数据库的测试SQL语句。我的数据库中没有匹配900的记录,但它返回的结果是1而不是0。我知道这是什么原因吗?

if

1 个答案:

答案 0 :(得分:2)

您得到1结果,因为您没有检查受影响的行。查询没有错误,因此得到1个结果。

要使结果准确,您需要检查零行和非零行。

http://php.net/manual/en/mysqli.affected-rows.php

未经测试的建议:

echo json_encode(['result' => (int)($conn->query("UPDATE mytable SET verify = 'yes' WHERE number = '900'") && $conn->affected_rows)]);

换句话说,如果查询返回的结果为非假,并且受影响的行结果为非零,则整个条件的值为true。如果将true转换为整数,则得到1;否则,得到1。 false变为0。