使用 php 中三个查询中第一个的插入 id

Posted

技术标签:

【中文标题】使用 php 中三个查询中第一个的插入 id【英文标题】:Using an insert id from first of three queries in php 【发布时间】:2013-01-04 05:40:24 【问题描述】:

我想将来自几个 curl 调用的数据存储到初始表中,但最后一个插入 id 插入了错误的信息

查询1向表中插入数据

表1

   id name      email      valuereturn
   1   val     val@email.com       0

然后我将数据发布 3 次到我的系统并记录它

表2

    id  name    system  valuereturn
    1   val      5       0
    2   val      0       0
    3   val      0       0

从我的系统返回的最大值我想更新表 1

update table1 
set valuereturn = '5' 
where id = LAST_INSERT_ID()

不起作用,因为 table2 中的最后一个插入 id 是 3,我该如何使用 last_insert_id(Table1) 之类的东西?

我想更新我的

【问题讨论】:

好吧,你不能。您必须在 php 变量中检索并记住它。 @AndreKR 你能用这个作为答案吗,因为我就是这么做的。 idk 为什么我没有想到它,它是一个类,所以我在插入后只调用了一个 mysql_query("SELECT LAST_INSERT_ID()") 并将其保存到全局变量! ty 我做到了,但显然我只猜对了一半,它不一定是 PHP 变量。 【参考方案1】:

嗯,你不能。您必须在 PHP 变量中检索并记住它。

或者选择 Saharsh 的解决方案并将其记住在 MySQL 变量中。

【讨论】:

【参考方案2】:

将 table1 的 LAST_INSERT_ID() 存储在一个变量中,然后在更新查询中使用该变量。

INSERT INTO table1(name) values ('Saharsh');
SELECT LAST_INSERT_ID() INTO @table1Id;

INSERT INTO table2(name, table1id) values ('Saharsh', @table1Id);
UPDATE table1 SET valuereturn = '5' WHERE id = @table1Id;

【讨论】:

这可以在一个mysql连接上工作吗?或者如果我对两个表都有并行插入,它会合并吗? 它适用于一个 mysql 会话。你也可以创建过程来做同样的事情。【参考方案3】:

在 PHP 中,我假设您使用以下代码:

<?php
  connect_db();
  insert_first_query_to_table1();
  insert_second_query_to_table2();
  update_query_setting(last_insert_id());
?>

如果是这样的话,我建议你使用一个临时变量来存储last_insert_id

<?php
  connect_db();
  insert_first_query_to_table1();
  $setVal = last_insert_id();
  insert_second_query_to_table2();
  update_query_setting($setVal);
?>

希望这会有所帮助。

PS:这是一个伪代码!

【讨论】:

这就是我所做的,但它比那更糟糕

以上是关于使用 php 中三个查询中第一个的插入 id的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 MySQL 中第三个表中存在的 id 将数据从一个表复制到另一个表?

只有第一个 Mysqli Insert 查询与 PHP 工作,而其他人失败

我想将表单中的数据插入到表中,然后从另一个表中选择另一个数据并使用 PHP 插入到第三个表中

怎么查询数据库中第30到40条记录呢? 通过ID,查询当前第30-40条记录 注意,ID不是顺序的

返回与字典中第三个值最小的元组对应的键

如何在使用 PHP-PDO 记录查询时获取最后一个插入 ID