$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
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.