Mysql
 sql >> Database >  >> RDS >> Mysql

$wpdb->insert produce la voce duplicata '0-0' per la chiave '1'

Per quanto riguarda il motivo per cui non funziona:non impostare il terzo parametro di $wpdb->insert per svuotare la stringa. Formatta ogni campo di conseguenza..

Quello che fa ora equivale a:

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

Se vuoi davvero impostare il terzo parametro dovresti fare:

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

Per quanto riguarda l'errore:la tabella wp_term_relationships ha una chiave primaria univoca su (object_id, term_taxonomy_id). Ciò significa che non puoi avere due righe in quella tabella che hanno lo stesso object_id e term_taxonomy_id.

Anche se ciò è accaduto perché impostando il terzo parametro di inserimento su una stringa vuota, stai tentando di inserire righe con object_id=0 e term_taxonomy_id=0 più e più volte.