SQL PHP获取最后一个ID

时间:2017-05-14 14:14:57

标签: mysql sql

我有一个非常基本的Web服务(PHP),可以将数据插入两个表中。

非常简单的脚本

$conn = new MySQLi($servername, $username, $password, $dbname);
$sql = "INSERT INTO db (NAME) VALUES ('$Name')";
mysqli_query($conn,$sql);

下一个表插入非常简单,但使用上表/插入中的自动递增ID。

如果我使用$ conn-> insert_id如果我有两个线程使用这个脚本并且在我调用insert_id之前都进行插入会发生什么?

由于

2 个答案:

答案 0 :(得分:1)

来自documentation

  

mysqli_insert_id()函数返回由具有AUTO_INCREMENT属性的列的表上的查询(通常是INSERT)生成的ID。如果没有通过此连接发送INSERT或UPDATE语句,或者如果修改后的表没有具有AUTO_INCREMENT属性的列,则此函数将返回零。

强调我的。

换句话说,函数mysqli_insert_id返回用当前连接插入的ID。 PHP不是"线程",这意味着每个请求在新的启动之前完成并被杀死(有些简化,但你可以这样想)。这与函数的实现一起保证您将获得正确的ID返回。

答案 1 :(得分:0)

为避免冲突,您可以在插入之前执行以下查询:

<?php 
$sql = "SELECT your_incremented_id FROM db ORDER BY DESC LIMIT 1";

$result=mysqli_query($conn,$sql);

$id_result=mysql_fetch_assoc($result);

//get the last inserted row id


$id=$id_result['your_incremented_id']+1;

$time=rand(0,0.2);
sleep($time);
// your insert query with the new id

?>

应该避免你的问题