使用mysqli_insert_id获取错误的id

时间:2013-12-13 14:27:02

标签: php mysqli mysql-insert-id

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

很多人很有可能同时提交表格。

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

如果有几个人同时提交mysqli_insert_id可能会收到错误的ID吗?

对该用户的最新日期条目进行查询并从那里提取ID会更好吗?

或者我应该使用mysqli_insert_id然后检查该记录中的用户名以验证它是否正确?

或者我只是担心一些不是问题的事情?

感谢您的任何意见,我对此很陌生。

Kim:)

2 个答案:

答案 0 :(得分:5)

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

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

如果返回基本上是随机数的话,那将是完全没用的功能。例如考虑一系列父/子连接表。您插入父记录,尝试检索其ID,并获取某些OTHER插入的ID?现在你已经“丢失”了你的新记录,并将这些孩子附加到无效的父母身上。

不。该功能完全按照您的预期运行,您不必担心获取错误的ID。唯一需要注意的是,它只检索最后插入的ID。如果连续执行2次以上的插入,则丢失了除最后一次插入之外的所有ID。

答案 1 :(得分:-2)

你可以像这样使用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);
?>