Я получил следующий тестовый оператор 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.
Других решений пока нет …