Вы получаете 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.