sql >> データベース >  >> RDS >> Mysql

$ wpdb-> insertは、キー「1」の重複エントリ「0-0」を生成します

    動作しない理由:$wpdb->insertの3番目のパラメータを設定しないでください 文字列を空にします。それに応じてすべてのフィールドをフォーマットします。

    現在の機能は次のとおりです。

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

    本当に3番目のパラメータを設定したい場合は、次のようにする必要があります。

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

    エラーについて:wp_term_relationshipsテーブルには(object_id、term_taxonomy_id)に一意の主キーがあります。これは、同じobject_idとterm_taxonomy_idの両方を持つ2つの行をそのテーブルに含めることができないことを意味します。

    これは、insertの3番目のパラメーターを空の文字列に設定することにより、object_id=0およびterm_taxonomy_id=0の行を何度も挿入しようとしているために発生しました。



    1. 動的SQL(パラメーターとしてテーブル名を渡す)

    2. 変更時にサブカテゴリ選択ボックスを作成する

    3. SQLServerで主キーなしですべてのテーブルを返す3つの方法

    4. ElasticSearchJDBCリバーを使用してテーブルから変更を取得する