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