Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

$wpdb->insert produz entrada duplicada '0-0' para a chave '1'


Por que não funciona:não defina o terceiro parâmetro de $wpdb->insert para string vazia. Ele formata cada campo de acordo.

O que ele faz agora é equivalente a:
$wpdb->insert($table, array(
            'object_id' => sprintf('', $num_object_id), 
            'term_taxonomy_id' => sprintf('', $num_taxo_id),
            'term_order' => sprintf('', 0)
));

Se você realmente deseja definir o terceiro parâmetro, deve fazer:
$wpdb->insert($table, array(
            'object_id' => $num_object_id, 
            'term_taxonomy_id' => $num_taxo_id,
            'term_order' => 0
), array('%d', '%d', '%d'));

Quanto ao erro:a tabela wp_term_relationships possui uma chave primária exclusiva em (object_id, term_taxonomy_id). Isso significa que você não pode ter duas linhas nessa tabela que tenham o mesmo object_id e term_taxonomy_id.

Embora isso tenha acontecido porque, ao definir o terceiro parâmetro de insert para string vazia, você está tentando inserir linhas com object_id=0 e term_taxonomy_id=0 repetidamente.