【问题标题】:how can i add same values in 2 different tables [duplicate]如何在 2 个不同的表中添加相同的值 [重复]
【发布时间】:2012-11-01 02:31:27
【问题描述】:

可能重复:
Unable to insert data into multiple wordpress tables

根据上图,我有 2 个表,每个表有 1 个公共列,但问题是我必须在两列行中添加相同的值。虽然wp_terms.term_id 在数据库中有自动增量。但我不明白如何在wp_term_taxonomy.term_id 中复制和使用wp_terms.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>";
    }
}

请指导我该怎么做?

【问题讨论】:

  • 你应该在 php 中获得最后插入的 id

标签: php database wordpress


【解决方案1】:

我没有做太多的 wordpress,但从 documentation 看来,当您使用 insert() 方法而不是像您正在做的那样使用 query() 时,最后一个 id 仅填充在 wpdb 上。而且它不是全局常量,而是类变量。

$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'
));

【讨论】:

  • 能否请您简单地告诉我,
  • 告诉你什么?我刚刚向您展示了我的答案中的代码...添加到文档的链接。
  • 非常感谢。你真棒
  • 有没有办法检查数据库中是否已经存在这个词,所以它存在然后跳过并上传下一个词?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2022-11-03
  • 2017-11-24
  • 1970-01-01
  • 2020-01-15
  • 2017-12-03
  • 2021-08-21
相关资源
最近更新 更多