使用mysqli_insert_id获取错误的id


Getting the wrong id using mysqli_insert_id

我希望在将数据插入数据库后返回id。

多人同时提交表格的可能性很大。

我不希望错误的ID出现在结果中,因为这个ID也会记录在另一个数据库日志中,并用于在下一个显示给用户的表单中上传文件。

如果几个人同时提交mysqli_insert_id,那么是否有可能获取错误的id?

查询该用户的最新日期条目并从中提取id会更好吗?

或者我应该使用mysqli_insert_id,然后根据该记录中的username检查该id以验证它是否正确?

还是我只是担心一些不成问题的事情?

谢谢你的意见,我对此还很陌生。

Kim:)

last_insert_id()类型的函数绑定到特定的DB连接。你不会得到其他一些并行连接产生的id,你不会得到3个请求前用这个脚本进行的连接的id。

它将始终是您使用THIS特定数据库连接执行的最后一次插入的id。

如果它返回的基本上是一个随机数,那么它将是完全无用的函数。例如,考虑一系列父/子连接表。插入父记录,尝试检索其ID,然后获取某个OTHER插入的ID?现在你已经"丢失"了你的新记录,并且将把孩子附加到一个无效的父母身上。

没有。该函数的工作方式与您预期的完全一样,您不必担心得到错误的ID。唯一需要注意的是,它只检索LAST插入的ID。如果您在一行中插入了2个以上,那么除了最后一个插入之外,您已经丢失了所有插入的ID了。

您可以像这样使用mysql_insert_id

<?php
$con = mysql_connect("localhost", "peter", "abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$db_selected = mysql_select_db("test_db",$con);
$sql = "INSERT INTO person VALUES ('B�rge','Refsnes','Sandnes','17')";
$result = mysql_query($sql,$con);
echo "ID of last inserted record is: " . mysql_insert_id();
mysql_close($con);
?>