Wykrywanie błędów generowanych przez $ wpdb-> get_results ()

9

Jak wykryć błędy podczas korzystania z $ wpdb-> get_results ()?

Na przykład:

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

Powyższy kod nie generuje żadnych wyjątków ani błędów; po prostu ustawia wynik $ na pustą tablicę. Jak niezawodnie wykrywamy błędy generowane przez get_results ()?

rinogo
źródło

Odpowiedzi:

7

Istnieje zmienna klasy, która przechowuje ostatni ciąg błędów - $ wpdb-> last_error. Według sposobu kodowania $ wpdb, jeśli zapytanie powiedzie się, $ wpdb-> last_error będzie pustym ciągiem, jeśli się nie powiedzie, będzie to ciąg błędu zwrócony przez MySQL. Więc coś takiego by załatwiło sprawę.

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
if ($wpdb->last_error) {
  echo 'You done bad! ' . $wpdb->last_error;
}
bytesnz
źródło
Brzmi rozsądnie - nie mogę teraz na to spojrzeć, ale jeśli to zadziała, przyda się w przyszłości! Dzięki! :)
rinogo,
Wróciłem do tego na późniejszym zleceniu - działa świetnie! Umieściłem ten kod w funkcji; Zaktualizowałem twoją odpowiedź; Mam nadzieję, że nie masz nic przeciwko!
rinogo,
1

Najlepsze, co mogę znaleźć to:

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

Niestety to nie rozwiązuje problemu. Chcę obsłużyć błąd programowo, a nie tylko echo w strumieniu wyjściowym.

rinogo
źródło
Przypuszczam, że zawsze może zrobić coś niedobrego z przechwytywaniem bufor wyjściowy ...: /
rinogo