Почему запрос все еще выполняется, когда условие не выполняется?

Я получил следующий тестовый оператор 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;

-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; false становится 0.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]