我希望在将数据插入数据库后返回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);
?>