这是一个相当基本的问题,我目前有两个表,在第二个表中有一个表A
的外键列。
id Name
----------------
1 Name1
2 Name2
id Name Parent
-------------------------
1 John 1
会发生什么:
Name1
插入表A
,mysql插入id。John
插入表B
并将Parent
设置为刚刚插入的查询的id
。答案 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。