【问题标题】:how can I add same value in two different tables如何在两个不同的表中添加相同的值
【发布时间】:2012-11-01 02:45:16
【问题描述】:

我正在尝试使用 excel 文件添加自定义标签列表,我已经完成了大部分工作。但我很困惑如何在 2 个不同的表列中添加相同的值。

我在

中插入了值
INSERT INTO `steve`.`wp_terms` (`term_id`, `name`, `slug`, `term_group`) VALUES (NULL, 'tag99', 'tag99', '0');

INSERT INTO `steve`.`wp_term_taxonomy` (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES (NULL, '21', 'post_tag', '', '0', '0');

现在我想在两个表中添加 term_id .. 有人可以告诉我该怎么做吗?

AND term_id 是数据库生成的值。

【问题讨论】:

标签: php database wordpress


【解决方案1】:
INSERT INTO `steve`.`wp_term_taxonomy` (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES (NULL, LAST_INSERT_ID, 'post_tag', '', '0', '0');

如果我正确地遵循您的第一个查询插入表并为该记录创建一个新 id,那么您想在下一个查询中使用该 ID 插入到另一个表中,对吗?如果是这种情况,上述查询应该适用于您的第二个查询,使用 LAST_INSERT_ID 作为 term_id 值。

要使用您的新代码更新问题,我强调应该使用以下代码:

 $sql2 = "INSERT INTO " . $table2 . " (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES (NULL, LAST_INSERT_ID, 'post_tag', '', '0', '0')";

        $wpdb->query($sql);
        $wpdb->query($sql2);

上面的方式是在执行第一个查询之前覆盖它。

另外,我不明白您如何将空值插入到自动增量字段中,仅此一项就应该引发错误。老实说,您的两个查询都应该完全像这样将它们的基本 id(自动递增的)从查询中删除:

$sql2 = "插入" 。 $table2 。 " (term_id, taxonomy, description, parent, count) 值 (LAST_INSERT_ID, 'post_tag', '', '0', '0')";

【讨论】:

  • 是的,你是对的,我对自己的定义感到困惑,但你是绝对正确的。但是你能帮我一个忙,告诉我怎么解决这个问题
  • @Muzzy:你不需要额外的查询来获得你想要的,只需按照我的回答使用Alter table。在这种情况下,额外的查询会导致性能下降,因为term_id 中的值是由数据库生成的。
  • 你如何展示你认为它如何工作的代码,然后解释alter table如何更快。阅读手册并不是一个非常有用的答案,到目前为止,您已经完全证明了每次插入新记录时更改表是有意义的。
  • 天哪,他只需要改变一下桌子,就一次。之后,对于每条新记录,该列将像原始表的列(他试图复制)一样计算。
  • 你是认真的吗?两张桌子。一个人生成一个需要那个 ID 的 ID。这并不意味着两者将永远同步在一起>。
【解决方案2】:

使用mysql_insert_id()

mysql_query("INSERT INTO `steve`.`wp_terms` (`term_id`, `name`, `slug`, `term_group`) VALUES (NULL, 'tag99', 'tag99', '0')");

$lastInsertId = mysql_insert_id();

mysql_query("INSERT INTO `steve`.`wp_term_taxonomy` (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES (NULL, '" . $lastInsertId . "', 'post_tag', '', '0', '0')");

注意:要使用 mysql_insert_id(),wp_terms 中的 term_id 必须设置为自动递增。

【讨论】:

    【解决方案3】:

    您需要使用ALTER 表并将该列的定义/约束添加到另一个表中,这是manual

    【讨论】:

    • alter table 与手头的问题有什么关系?两个表都已包含他尝试将值添加到该列的列。
    • Alter 表可用于将 term_id 列的相同定义添加到另一个表中,因为它是生成其值的数据库。
    • 请阅读手册,Alter表也可用于更改现有列的定义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2018-11-30
    • 2022-01-04
    相关资源
    最近更新 更多