根据上图我有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>";
}
}
请指导我该怎么做?
答案 0 :(得分:1)
我没有做很多wordpress,但是从documentation看起来,当您使用wpdb
方法而不是insert()
方法时,最后一个ID只会在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'
));