-1
$dml = "insert into ... ";
mysql_query($dml,$con);
$Id = isset($row) ? $row['id'] : mysql_insert_id($con);

我看到记录已创建,但无法检索 Id。

怎么了?

编辑

已修复,它是由 $row 引起的。

4

4 回答 4

2

$row 必须已设置,因此它永远不会评估 last_insert_id() 调用

于 2009-09-17T05:42:07.800 回答
0

从 PHP 手册(http://php.net/manual/en/function.mysql-insert-id.php):

返回值

前一个 INSERT 查询成功时为列生成的 ID AUTO_INCREMENT ,如果前一个查询没有生成AUTO_INCREMENT值,则为 0,如果没有建立 MySQL 连接,则为 FALSE。

因此,虽然这看起来很愚蠢,但请确保您将数据插入其中的表包含具有AUTO_INCREMENT属性集的列。

于 2009-09-16T21:25:09.890 回答
0

你确定你在那个“id”上有一个auto_increment,在你刚刚插入一些数据的表中?

该手册mysql_insert_id指出:

返回值 上一个查询成功时为列
生成的 ID ,如果上一个查询没有生成,或者 没有建立 MySQL 连接,则返回 0。AUTO_INCREMENTINSERTAUTO_INCREMENTFALSE

也许这解释了问题?

如果没有,您能否向我们提供更多信息?喜欢表的结构和/或完整的插入查询?

于 2009-09-16T21:25:54.863 回答
0

您可以在 SQL 查询中使用内部 MySQL SQL 函数 LAST_INSERT_ID() 吗?

于 2009-09-16T21:23:21.967 回答