php mysql_insert_id();不工作

时间:2009-12-14 12:19:41

标签: php mysql

嗨,大家好,我希望能得到一些帮助。

我对表有一个INSERT查询,完成此操作后我正在调用:

mysql_insert_id();

为了将插入表格的最后一个ID发送到下一页,如下所示:

$insertGoTo = "confirm_booking.php?booking_ID=" .$_POST['booking_ID']. "";

不幸的是它不起作用,我得到的只是零。

我插入的表格有一个自动增量编号,并插入值。

我也试过SELECT MAX(id) FROM mytable。这不适用。

我知道这个问题已经被讨论过了。我阅读了所有帖子但没有任何用处。

非常感谢Francesco

8 个答案:

答案 0 :(得分:3)

生成链接时必须使用MySql_Insert_Id()返回的值:

// your query
$newId = MySql_Insert_Id ();

$insertGoTo = "confirm_booking.php?booking_ID=" . $newId;

答案 1 :(得分:3)

您的表格可能没有任何AUTO_INCREMENT字段!

也可能因为您同时拥有两个或更多mysql连接而发生。 在这种情况下,您应该使用link identifier

$link = mysql_connect( ... );
mysql_select_db('mydb', $link);
mysql_query('INSERT mytable SET abc="123"', $link);
$inserted_id = mysql_insert_id($link);

答案 2 :(得分:2)

PHP手册中的一些要点:

  

为AUTO_INCREMENT生成的ID   上一个查询列   成功,如果上一个查询确实为0   不生成AUTO_INCREMENT值,   如果没有MySQL连接,则为FALSE   建立的。

如果没有AUTO_INCREMENT字段不是你的问题,你可能想尝试存储mysql_query调用的结果并将其用作id函数的参数

$result = mysql_query("...");
$id = mysql_insert_id($result);

答案 3 :(得分:2)

使用如下查询出现问题:

INSERT INTO会员(用户名,密码,电子邮件)VALUES(...)

  • 原因是id(这是我的主键和自动增量字段)不是查询的一部分。

将其更改为:

INSERT INTO会员(身份证,用户名,密码,电子邮件)VALUES('',...)

使用空值''将使MySQL使用自动增量值,但也允许您在查询中使用它,以便您可以返回插入ID

答案 4 :(得分:1)

如果插入失败,mysp_insert_id可能返回0或false? 因此,如果您在使用mysql_insert_id时遇到问题,请不要重新调整您的预期,确认您没有唯一的约束或sql的其他问题会导致插入失败。如果你考虑这个,使用max是一个糟糕的主意。

答案 5 :(得分:0)

确保将mysql_insert_id()放在

之后
mysql_query($sql, $con); //Execute the query

以上查询负责执行您的Insert INTO ...命令。 您可以获得最后插入ID

答案 6 :(得分:0)

我也遇到了这个问题。 最后我发现问题出现在我与数据库的连接中。您可以使用以下连接代码连接数据库,然后您可以轻松使用mysqli_insert_id()。

$db_connect = mysqli_connect("localhost", "root", "", "social");

然后您可以使用 mysqli_insert_id()作为

$id = mysqli_insert_id($db_conx);

我希望这会对你有所帮助。我有任何问题,请留下您的评论。

答案 7 :(得分:0)

mysqli_insert_id function has been deprecated。这可能是你的问题。

相反,请尝试$mysqli->insert_id。有关详细信息,请参阅documentation