插入行时返回A_I的下一个序列?

时间:2012-03-30 13:12:32

标签: php mysql

我正在使用PHP / MySql。

如果我有两张表(假设)如下:

id
name

parent_id
action

第一个表中的id设置为AUTO_INCREMENT,如果我想在不重构数据库的情况下尽可能少地将数据插入到两个表中,我怎么能这样做呢?我需要下一个A_I值,该值将被插入到表1中的名称中,作为第二个表的父ID插入。

可能是一个糟糕的例子,但这是我试图解决的问题。在那一刻我不得不做以下事情:

<?php
$mysqli->query("INSERT INTO table_1 (name) VALUES ('Bob');

$names = $mysqli->query("SELECT * FROM table_1 WHERE name = 'Bob'");

while($name = $names->fetch_assoc()) {

    $mysqli->query("INSERT INTO table_2 (parent_id, action) VALUES ('".$name['id']."', 'run')");

}
?>

但很明显,如果有同名的人,这种方法就会中断。

感谢。

2 个答案:

答案 0 :(得分:3)

您所需要的只是http://php.net/manual/en/mysqli.insert-id.php

<?php
    $mysqli->query("INSERT INTO table_1 (name) VALUES ('Bob')");
    $mysqli->query("INSERT INTO table_2 (parent_id, action) VALUES ($mysqli->insert_id,'run')");


?>

答案 1 :(得分:1)

您可以使用PHP函数$mysqli->insert_id或MySQL函数last_insert_id()

我会这样做:

$mysqli->query("INSERT INTO table_1 (name) VALUES ('Bob')");
$mysqli->query("INSERT INTO table_2 (parent_id, action) VALUES (LAST_INSERT_ID(),'run')");