Обнаружение ошибок, генерируемых $wpdb->get_results()

18 апр. 2014 г., 00:54:09
Просмотры: 16.1K
Голосов: 14

Как обнаружить ошибки при использовании $wpdb->get_results()?

Например:

$result = $wpdb->get_results("SELECT * FROM это невалидный запрос");

Приведенный код не генерирует никаких исключений или ошибок; он просто устанавливает $result в пустой массив. Как мы можем надежно обнаруживать ошибки, генерируемые get_results()?

0
Все ответы на вопрос 2
2
13

Существует переменная класса, которая хранит строку последней ошибки - $wpdb->last_error. Судя по коду $wpdb, если запрос выполняется успешно, $wpdb->last_error будет пустой строкой, а если запрос завершится ошибкой, в ней будет строка ошибки, возвращенная MySQL. Таким образом, можно использовать следующий подход:

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
if ($wpdb->last_error) {
  echo 'Ошибка выполнения запроса: ' . $wpdb->last_error;
}
23 апр. 2015 г. 09:31:31
Комментарии

Звучит разумно — сейчас у меня нет возможности разобраться с этим, но если это сработает, будет очень полезно в будущем! Спасибо! :)

rinogo rinogo
23 апр. 2015 г. 19:49:18

Вернулся к этому в другом задании — работает отлично! Я поместил этот код в функцию и обновил ваш ответ; надеюсь, вы не против!

rinogo rinogo
6 нояб. 2017 г. 20:53:38
1

Лучшее, что я могу найти, это:

$wpdb->show_errors();
$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
$wpdb->hide_errors();

К сожалению, это едва ли решает проблему. Я хочу обработать ошибку программно, а не просто выводить её в поток вывода.

18 апр. 2014 г. 01:00:13
Комментарии

Полагаю, я всегда могу сделать что-то нехорошее с перехватом выходного буфера... :/

rinogo rinogo
18 апр. 2014 г. 01:01:00