Mysql
 sql >> Datenbank >  >> RDS >> Mysql

$wpdb->insert erzeugt doppelten Eintrag '0-0' für Schlüssel '1'

Warum es nicht funktioniert:Setzen Sie den dritten Parameter von $wpdb->insert nicht zu einer leeren Zeichenfolge. Es formatiert jedes Feld entsprechend..

Was es jetzt tut, ist äquivalent zu:

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

Wenn Sie wirklich den dritten Parameter setzen möchten, sollten Sie Folgendes tun:

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

Was den Fehler betrifft:Die wp_term_relationships-Tabelle hat einen eindeutigen Primärschlüssel (object_id, term_taxonomy_id). Das bedeutet, dass Sie nicht zwei Zeilen in dieser Tabelle haben können, die beide dieselbe object_id und term_taxonomy_id haben.

Dies ist jedoch passiert, weil Sie durch das Setzen des dritten Parameters von insert auf eine leere Zeichenfolge versuchen, Zeilen mit object_id=0 und term_taxonomy_id=0 immer wieder einzufügen.