web-dev-qa-db-fra.com

Obtenir des messages d'erreur lorsque $ wpdb-> insert () renvoie false?

$wpdb->insert() renvoie false, ce que j'ai appris, signifie que l'insertion a échoué. Maintenant, j'aimerais savoir pourquoi cela échoue avec l'insert.

Selon ce ticket https://core.trac.wordpress.org/ticket/32315 le problème pourrait être que la valeur est trop longue ou contient des caractères incorrects.

Voici la requête d'insertion:

$result = $wpdb->insert('table', $ins_args, array('%d', '%d', '%s', '%s', '%s', '%s'));

Il est difficile d'afficher les valeurs du tableau $ins_args car certaines valeurs sont assez longues. Spécialement celui du champ nommé value. Mais j'utilise le type longtext pour ce champ. Et cet insert est beaucoup utilisé. Et la plupart du temps, cela fonctionne avec succès. Cela ressemble donc vraiment à un problème d'encodage ou de taille.

Comment puis-je savoir quel est le problème? $wpdb->last_error est vide

4
Peter Westerlund

La méthode $wpdb->insert() renvoie false si la ligne n'a pas pu être insérée. Sinon, il retourne le nombre de lignes affectées (qui sera toujours 1).

Vous pouvez activer et désactiver l'écho des erreurs avec show_errors et hide_errors, respectivement.

<?php $wpdb->show_errors(); ?> 
<?php $wpdb->hide_errors(); ?> 

Vous pouvez également imprimer l'erreur (le cas échéant) générée par la requête la plus récente avec print_error.

<?php $wpdb->print_error(); ?> 

Vous pouvez également utiliser le champ $last_error, qui contiendra le texte d'erreur le plus récent généré par MySQL.

1
Krzysiek Dróżdż