多个ID SQL查询

时间:2013-10-10 12:08:26

标签: php mysql sql pdo

我们只想说我有两张桌子。

第一个:

id thing1 thing2

第二个:

id_fo other_thing

其中id_fo取决于第一个表。

我必须在两个表中插入thingS,但在php mysql请求(例如pdo)中,如何获取所有最后一个插入ID?

我的意思是,如果我在一个查询中有30行,我将有30个新ID。

如何进行第二次SQL查询?

4 个答案:

答案 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);
}