Mysql
 sql >> Base de données >  >> RDS >> Mysql

$wpdb->insert produit une entrée en double '0-0' pour la clé '1'

Quant à savoir pourquoi cela ne fonctionne pas :ne définissez pas le troisième paramètre de $wpdb->insert pour vider la chaîne. Il formate chaque champ en conséquence.

Ce qu'il fait maintenant équivaut à :

$wpdb->insert($table, array(
            'object_id' => sprintf('', $num_object_id), 
            'term_taxonomy_id' => sprintf('', $num_taxo_id),
            'term_order' => sprintf('', 0)
));

Si vous voulez vraiment définir un troisième paramètre, vous devez faire :

$wpdb->insert($table, array(
            'object_id' => $num_object_id, 
            'term_taxonomy_id' => $num_taxo_id,
            'term_order' => 0
), array('%d', '%d', '%d'));

En ce qui concerne l'erreur :la table wp_term_relationships a une clé primaire unique sur (object_id, term_taxonomy_id). Cela signifie que vous ne pouvez pas avoir deux lignes dans cette table qui ont à la fois le même object_id et le même term_taxonomy_id.

Bien que cela se soit produit parce qu'en définissant le troisième paramètre d'insertion sur une chaîne vide, vous essayez d'insérer des lignes avec object_id=0 et term_taxonomy_id=0 encore et encore.