如何获得Insert的结果

时间:2010-11-02 17:59:21

标签: php sql mysql

这是一个相当基本的问题,我目前有两个表,在第二个表中有一个表A的外键列。

表A:

id       Name
----------------
1        Name1
2        Name2

表B:

id       Name      Parent
-------------------------
1        John      1

会发生什么:

  • 我的PHP脚本将Name1插入表A,mysql插入id。
  • 我的PHP脚本需要将John插入表B并将Parent设置为刚刚插入的查询的id

3 个答案:

答案 0 :(得分:3)

您可以使用mysql_insert_id()获取最后插入的ID。

  

mysql_insert_id - 获取生成的ID   在上一个查询中

<强>注意:

  

mysql_insert_id()将转换为   返回本机MySQL C API的类型   函数mysql_insert_id()到一个类型   long(在PHP中命名为int)。如果你的   AUTO_INCREMENT列有一列   BIGINT的类型(64位)   转换可能会导致错误   值。相反,使用内部MySQL   SQL函数LAST_INSERT_ID()中的   SQL查询。有关的更多信息   请给出PHP的最大整数值   请参阅整数文档。

示例:

mysql_query("INSERT INTO ..........");
printf("Last inserted record has id %d\n", mysql_insert_id());

答案 1 :(得分:3)

第一次插入后,您可以执行以下操作:

$res = mysql_query('SELECT LAST_INSERT_ID()');
$row = mysql_fetch_array($res);
$lastInsertId = $row[0];

或者,您可以使用mysql_insert_id。但是,从手册:

  

mysql_insert_id()将转换为   返回本机MySQL C API的类型   函数mysql_insert_id()到一个类型   long(在PHP中命名为int)。如果你的   AUTO_INCREMENT列有一列   BIGINT的类型(64位)   转换可能会导致错误   值。而是使用内部MySQL   SQL函数LAST_INSERT_ID()中的   SQL查询。

因此,如果您的专栏使用 - 或将来可能会使用 - BIGINT,我首选列出的第一种方法。

答案 2 :(得分:2)

使用INSERT执行mysql_query查询后,您可以使用mysql_insert_id获取用于以前插入的行的ID。