讓我們只是說我有兩個表。多個ID SQL查詢
第一個:
id thing1 thing2
第二種:
id_fo other_thing
其中id_fo取決於從第一個表。
我必須在這兩個表中插入thingS,但在php mysql請求(例如pdo)中,如何獲取所有最後一個插入ID?
我的意思是,如果我在一個查詢中有30行,我將有30個新的ID。
我該如何做第二次SQL查詢?
讓我們只是說我有兩個表。多個ID SQL查詢
第一個:
id thing1 thing2
第二種:
id_fo other_thing
其中id_fo取決於從第一個表。
我必須在這兩個表中插入thingS,但在php mysql請求(例如pdo)中,如何獲取所有最後一個插入ID?
我的意思是,如果我在一個查詢中有30行,我將有30個新的ID。
我該如何做第二次SQL查詢?
在的僞代碼:
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代碼它調用的查詢。
INSERT和UPDATE不返回任何數據集,您可以添加帶有時間戳類型的INSERTED列,將DEFAULT設置爲CURRENT_TIMESTAMP並選擇具有最大時間戳值的所有行。
你在找這樣的嗎?
$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 ");
}
,如果你能保證只有一個插入過程中不停地換着時間,你可以做這樣的事情的僞代碼:
$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);
}
你需要更明確的...你可能要重新制定問題或舉例說明你需要什麼...... – Nathan
不能比這更明確。如果我在第一個表格中添加30行,我如何獲取所有ID。 – Cherche