使用 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 插入到第三个表中