Задать вопрос
@defmin

Нубский вопрос: что произошло при false?

mysqli_query

Возвращает false в случае возникновения ошибки. В случае успешного выполнения запросов, которые создают набор результатов, таких как SELECT, SHOW, DESCRIBE или EXPLAIN, функция mysqli_query() вернёт объект mysqli_result. Для остальных успешных запросов mysqli_query() вернёт true.


Если при SELECT не будет найдена строка, то это - false?

Что значит - успешный запрос? Является ли запрос, при котором строка не найдена - успешным и что он тогда вернёт - false или пустой объект mysqli_result и я как осёл буду радоваться: объект получен, значит строка найдена?
  • Вопрос задан
  • 267 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 3
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Если произошла ошибка при выполнении запроса, то есть запрос почему-то оказалось невозможным выполнить, то вернется false.
В противном случае будет возвращен объект с результатом запроса (для SELECT) или true.
Результат может быть пустым.
Чтобы узнать количество полученных строк в результате, воспользуйтесь https://www.php.net/manual/ru/mysqli-result.num-ro...
Ответ написан
@alexalexes
Вы путаете уровни абстракции, на которых можно получать исключения (ошибки).
С точки зрения обмена данных между клиентом СУБД и СУБД не будет ошибкой, если СУБД вернет пустую выборку при корректно отправленном запросе клиентом и при корректном выполнении плана выполнения запроса со стороны СУБД.
Но для бизнес-логики, для которой вы пытаетесь обозначить ошибку, наверное, будет существенно, отсутствие выборки. На этом уровне вы сами должны оценить результат запроса в PHP коде и сгенерировать исключение по бизнес-логике.
Ответ написан
Все ответы на ваши вопросы есть в документации
https://www.w3schools.com/php/func_mysqli_query.asp

For successful SELECT, SHOW, DESCRIBE, or EXPLAIN queries it will return a mysqli_result object. For other successful queries it will return TRUE. FALSE on failure
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
cyber-jet
@cyber-jet
Самое простое, применить строгое сравнение:
if ($result === false) {
    echo "ошибка запроса";
}

Да и при приведении типов объект mysqli_result в любом случае не будет false, даже если содержит 0 строк.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы