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 ()?

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;
}

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.


Przypuszczam, że zawsze może zrobić coś niedobrego z przechwytywaniem bufor wyjściowy ...: /
rinogo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.