0

重複の可能性:
複数のワードプレス テーブルにデータを挿入できない

ここに画像の説明を入力

上の図によると、2 つのテーブルがあり、各テーブルには共通の列が 1 つありますが、両方の列の行に同じ値を追加する必要があるという問題があります。wp_terms.term_idデータベースに自動インクリメントがありますが。wp_terms.term_idしかし、で値をコピーして使用する方法がわかりませんwp_term_taxonomy.term_id

以下に示すSQLクエリを試しました:

// create a tag
$query = "INSERT INTO $wpdb->terms (name, slug) VALUES (%s, %s)";
$wpdb->query($wpdb->prepare($query, $name, $slug));

// create the relationship 
$query = "INSERT INTO $wpdb->term_taxonomy (term_id, taxonomy) VALUES (%d, %s)";  
$wpdb->query($wpdb->prepare($query, LAST_INSERT_ID, 'post_tag')); 

しかし、phpmyadmin を使用してデータベースをチェックするときにこのスクリプトを実行した後、wp_termsテーブルが正しく入力されていることに気付きましたが、wp_term_taxonomy>term_id列は空です。

そして、私の実際のコードは次のとおりです。

$file_name = $_FILES['tag_import']['name'];
$file_ext = strtolower(end(explode(".", $file_name)));
$file_size = $_FILES['tag_import']['size'];

if (( $file_ext == "xls" ) && ( $file_size < 500000 )) 
{       
    $data = new Spreadsheet_Excel_Reader();
    $data->setOutputEncoding('CP1251');
    $data->read($_FILES['tag_import']['tmp_name']);

    for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++)
    {
        for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++)
        {
            // add the new category 
            $query = "INSERT INTO $wpdb->terms (name, slug) VALUES (%s, %s)";
            $wpdb->query($wpdb->prepare($query, $data->sheets[0]['cells'][$i][1], $data->sheets[0]['cells'][$i][2])); 

            // create the relationship 
            $query = "INSERT INTO $wpdb->term_taxonomy (term_id, taxonomy) VALUES (%d, %s)";  
            $wpdb->query($wpdb->prepare($query, LAST_INSERT_ID, 'post_tag'));           
        }
    }
    else  
    {
        echo "<div class='error'><p>Invalid file or file size too big.</p></div>";
    }
}

どうすればそれを行うことができますか?

4

1 に答える 1

1

私は多くのワードプレスを行いませんが、ドキュメントから、最後のIDは、あなたが行っているように使用するのではなく、メソッドwpdbを使用するときにのみ入力されるようです. そして、それはグローバル定数ではなく、クラス変数です。insert()query()

$wpdb->insert('terms', array(
  'name' =>  $data->sheets[0]['cells'][$i][1],
  'slug' => $data->sheets[0]['cells'][$i][2]
));

$wpdb->insert('term_taxonomy', array(
  'term_id' => $wpdb->insert_id,
  'taxonomy' => 'post_tag'
));
于 2012-11-01T02:39:18.207 に答える