插入后立即返回mysql DB中的id AUTO_INCREMENT值

时间:2015-10-18 09:52:32

标签: php sql mysqli

此外,我使用此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 ....但是对于高流量插入数据库可能会出错。

2 个答案:

答案 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