我得到了以下链接到数据库的测试SQL语句。我在数据库中没有任何与 900 匹配的记录,但它返回的结果 = 1 而不是 0。我能知道这是什么原因吗?
$query = "update mytable set verify = 'yes' where number ='900'";
$result = $conn->query($query);
if (!$result){
$json_out = "[" . json_encode(array("result"=>0)) . "]";
}
else {
$json_out = "[" . json_encode(array("result"=>1)) . "]";
}
echo $json_out;
您得到 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; false
变为 0。