Php 使用mysqli\u insert\u id获取错误的id

Php 使用mysqli\u insert\u id获取错误的id,php,mysqli,mysql-insert-id,Php,Mysqli,Mysql Insert Id,我希望在将数据插入数据库后返回id 多人同时提交表格的可能性很大 我不希望在结果中显示错误的ID,因为该ID也将记录在另一个数据库日志中,并用于在显示给用户的下一个表单中上载文件 如果几个人同时提交mysqli_insert_id,是否有可能获取错误的id 对该用户的最新日期条目进行查询并从中提取id是否更好 或者我应该使用mysqli_insert_id,然后根据该记录中的用户名检查该id,以验证它是否正确 或者我只是担心一些不是问题的事情 谢谢你的意见,我对这个很陌生 Kim:)last\u

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

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

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

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

对该用户的最新日期条目进行查询并从中提取id是否更好

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

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

谢谢你的意见,我对这个很陌生

Kim:)

last\u insert\u id()
-类型函数绑定到特定的数据库连接。您将无法获得其他并行连接生成的id,也无法获得您在3个请求之前使用此脚本进行的连接的id

它将始终是您使用此特定db连接执行的最后一次插入的id

如果它返回一个本质上是随机数的函数,那么它将是完全无用的。例如,考虑一系列父/子连接表。插入父记录,尝试检索其ID,然后获取其他插入的ID?现在您已经“丢失”了新记录,并将子项附加到无效的父项


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

您可以像这样使用mysql\u insert\u 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);
?> 

“同时”表示毫秒的刻度。。。这取决于每秒有多少用户提交它,但我认为至少不太可能。然而,等待一些完整的答案,我们都会学习(:IIRC,使用事务应该不会有问题:看:mysql_*不推荐使用。请不要使用它。请理解,只需使用mysqli过程而不是mysql,明白了。我从不得不重写东西的艰难过程中吸取了教训,因为清单贬值。我扔掉了我正在使用的书,并试图坚持在线php网站.也许有一天我真的会忘记程序,专注于面向对象。现在是小步骤。谢谢大家的投入。