此外,我使用此mysqli代码插入数据库。
邮件DB的ID为AUTO_INCREMENT。
$sql = "INSERT INTO mail (".$sqlname.") VALUES (".$sqlValue.")";
if (!($conn->query($sql) === TRUE))
{
echo 'false';
return false;
}
else
return $id; // return id of insereted record in table
插入后有没有办法在邮件表中实时返回id?
我可以通过调用另一个函数来调用最后一个ID ....但是对于高流量插入数据库可能会出错。
答案 0 :(得分:1)
如果您使用的是mysqli,则可以使用mysqli_insert_id
:
return $conn->insert_id;
如果您使用的是PDO,则可以使用lastInsertId
:
return $conn->lastInsertId();
答案 1 :(得分:1)
说明
当生成新的AUTO_INCREMENT值时,您还可以通过使用mysql_query()执行SELECT LAST_INSERT_ID()
语句并从语句返回的结果集中检索值来获取它。
对于LAST_INSERT_ID(),最近生成的ID在每个连接的基础上维护在服务器中。它不会被其他客户更改。如果使用非可疑值更新另一个AUTO_INCREMENT列(即,非NULL且不为0的值),则甚至不会更改它。同时从多个客户端使用LAST_INSERT_ID()和AUTO_INCREMENT列是完全有效的。每个客户端将收到客户端执行的最后一个语句的最后插入的ID。
详情请见https://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html