Używam $wpdb->update
do aktualizacji niestandardowej tabeli, którą mam w mojej bazie danych. Kiedy I var_dump
wynik zwraca:
int(0)
Próbowałem $wpdb->print_error()
więc zobaczyć, co jest nie tak. Jednak nic nie pokazuje. Próbowałem też $wpdb->show_errors()
, ale znowu nic nie pokazałem.
Dokumenty wpdb nie zawierają zbyt szczegółowych informacji na temat korzystania z tych funkcji, więc nie jestem pewien, czy korzystam z nich poprawnie. Ale dlaczego wynik aktualizacji tabeli zwraca 0 i nie pokazuje żadnych błędów?
SHOW FULL COLUMNS FROM ``
w moim przypadkuPokaż błędy:
$wpdb->show_errors = true
wyświetla błędy automatycznie, jeśliWP_DEBUG
jest ustawiony natrue
.$wpdb->suppress_errors = false
przestaje tłumić błędy.Multisite wymaga specjalnego traktowania
Obsługa danych wyjściowych
$wpdb->update()
Sposób ma trzy wyjścia. Aby sprawdzić czy przeciwko niej, trzeba zapisać wynik ia var:$result = $wpdb->update( /* ... */ );
.Obsługa tych scenariuszy:
false === $result
: Zawieść0 === $result
: Sukces, ale brak aktualizacji0 < $result
: SukcesWyjście klasy
$wpdb->last_error
pokaże ci ostatni błąd, jeśli go masz.$wpdb->last_query
pomoże ci pokazać ostatnie zapytanie (gdzie wystąpił błąd). Jest w zasadzie taki sam jakarray_pop( $wpbd->queries );
.Ważna uwaga (bezpieczeństwo)
Proszę nie NIE dodać to kody na żywo miejscu. Zwłaszcza jeśli nie dotyczy to wtyczek buforujących. Może to ujawnić odwiedzającym ważne dane związane z DB !
Jeśli nie możesz zrobić inaczej: zawsze zawijaj kod w instrukcje warunkowe, aby uniknąć publicznego debugowania danych wyjściowych!
Ujawnienie
$wpdb
obiektu może również ujawnić nazwę użytkownika i hasło do bazy danych!źródło
Odpowiedź zerowa oznacza dotknięcie zerowych wierszy, co różni się od błędu.
Trudno powiedzieć bez spojrzenia na zapytanie, dlaczego żadne wiersze nie są aktualizowane. Jednym z narzędzi do debugowania, które możesz wypróbować, jest ustawienie
SAVEQUERIES
true dla pliku wp-config.php.Następnie po swoich tras zapytania, spróbuj
var_dump
ing$wpdb->queries
.źródło
źródło
Wypróbuj to przed zapytaniem:
a może po zapytaniu:
źródło