我们只想说我有两张桌子。
第一个:
id thing1 thing2
第二个:
id_fo other_thing
其中id_fo取决于第一个表。
我必须在两个表中插入thingS,但在php mysql请求(例如pdo)中,如何获取所有最后一个插入ID?
我的意思是,如果我在一个查询中有30行,我将有30个新ID。
如何进行第二次SQL查询?
答案 0 :(得分:1)
你在找这样的东西吗?
$main_data = array('dino', 'babu', 'john');
foreach($main_data as $main) {
// Insert main to 1st table
mysql_query("MY INSERT QUERY TO TABLE 1");
// Get the last insert id
$new_id = mysql_insert_id();
// Insert the sub data to 2nd table using the insert id
mysql_query("MY INSERT QUERY TO TABLE 2 USING $new_id ");
}
答案 1 :(得分:1)
在Psuedo代码中:
Start transaction
insert into table1 (thing1, thing2) values (thingS,thingS2)
lastidtable1 = lastinsertedid();
insert into table2 (id_fo, other_thing) values (lastidtable1,thingS);
lastidtable2 = lastinsertedId();
commit;
上面的每一行都应该是调用查询的php代码。
答案 2 :(得分:0)
INSERT和UPDATE不返回任何数据集,可以添加带时间戳类型的INSERTED列,将DEFAULT设置为CURRENT_TIMESTAMP并选择时间戳值最大的所有行。
答案 3 :(得分:0)
如果你能保证一次只能进行一次插入过程,你可以做类似这样的伪代码:
$max1=select max(id) as max1 from table;
insert into table ....
$num_inserted_rows=number of inserted rows.
$max2=select max(id) as max2 from table;
if(($max2-$max1) == $num_inserted_rows){
$lastid=select last_insert_id();
$inserted_ids=range($lastid-$num_inserted_rows,$lastid);
}