重複の可能性:
複数のワードプレス テーブルにデータを挿入できない
上の図によると、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>";
}
}
どうすればそれを行うことができますか?