J'utilise $wpdb->update
pour mettre à jour une table personnalisée que j'ai dans ma base de données. Quand je var_dump
le résultat il revient:
int(0)
J'ai donc essayé $wpdb->print_error()
de voir ce qui ne va pas. Cependant, cela ne montre rien. J'ai également essayé $wpdb->show_errors()
, mais encore une fois, cela n'a rien montré.
Les documents wpdb n'entrent pas dans les détails sur la façon d'utiliser ces fonctions, donc je ne sais pas si je les utilise correctement. Mais pourquoi le résultat de la mise à jour d'une table retournerait-il 0 et ne montrerait aucune erreur?
SHOW FULL COLUMNS FROM ``
dans mon casAfficher les erreurs:
$wpdb->show_errors = true
affiche automatiquement les erreurs, siWP_DEBUG
est défini surtrue
.$wpdb->suppress_errors = false
arrête de supprimer les erreurs.Les multisites nécessitent un traitement spécial
Gestion des sorties
La
$wpdb->update()
méthode a trois sorties différentes. Pour vérifier contre, vous devez enregistrer le résultat ia var:$result = $wpdb->update( /* ... */ );
.Le gérer ces scénarios:
false === $result
: Échouer0 === $result
: Succès, mais pas de mise à jour0 < $result
: SuccèsSortie de classe
$wpdb->last_error
vous montrera la dernière erreur, si vous en avez une.$wpdb->last_query
vous aidera à afficher la dernière requête (là où l'erreur s'est produite). C'est fondamentalement la même chose quearray_pop( $wpbd->queries );
.Remarque importante (sécurité)
Veuillez NE PAS ajouter ces codes sur le site en direct. Surtout pas si des plugins de mise en cache sont impliqués. Cela peut exposer des données importantes liées aux bases de données aux visiteurs !
Si vous ne pouvez pas faire autrement: enveloppez toujours votre code dans des instructions conditionnelles pour empêcher la sortie de débogage publique!
L'exposition de l'
$wpdb
objet peut également révéler le nom d'utilisateur et le mot de passe de votre base de données!la source
Une réponse nulle signifie zéro ligne affectée, ce qui est différent d'une erreur.
Il est difficile de dire sans regarder votre requête pourquoi aucune ligne n'est mise à jour. Un outil de débogage que vous pouvez essayer consiste à définir "
SAVEQUERIES
" sur true dans votre fichier wp-config.php.Puis , après l' exécution de votre requête, essayez
var_dump
ing$wpdb->queries
.la source
la source
Essayez ceci avant votre requête:
ou peut-être ceci après votre requête:
la source