mySQL中的php自动递增ID与存储ID不同

mySQL中的php自动递增ID与存储ID不同,php,mysql,Php,Mysql,所以在我的网页上我有一个数据库连接设置。 一旦用户在网页上发表评论,它会将评论添加到数据库中,数据库中名为ID的列将递增1。 此ID用作数据库中每一行的主键。 因此,当用户想要删除注释时,它会检查数据库中具有匹配主键的注释 我目前的解决办法是这样 将注释添加到数据库中 数据库添加ID 从数据库中获取ID 将其与注释一起存储在一个数组中 当用户单击“删除注释”时,请检查注释ID是否与数据库中的ID匹配 我的问题是,调用数据库来添加注释,然后再次调用数据库来获取注释ID,感觉很奇怪 有更好的解决方案

所以在我的网页上我有一个数据库连接设置。 一旦用户在网页上发表评论,它会将评论添加到数据库中,数据库中名为ID的列将递增1。 此ID用作数据库中每一行的主键。 因此,当用户想要删除注释时,它会检查数据库中具有匹配主键的注释

我目前的解决办法是这样

将注释添加到数据库中

数据库添加ID

从数据库中获取ID

将其与注释一起存储在一个数组中

当用户单击“删除注释”时,请检查注释ID是否与数据库中的ID匹配

我的问题是,调用数据库来添加注释,然后再次调用数据库来获取注释ID,感觉很奇怪


有更好的解决方案吗?

您可以使用
mysql\u insert\u id()
函数获取记录插入id或类似函数,具体取决于您使用的驱动程序。但这应该有一个特殊的功能


您不需要运行另一个查询。

下面我根据您的问题添加了一些代码。假设您有一个名为comments的表,其中插入了一些值,由于
id
是一个自动递增的字段,因此它会与传递的数据一起自动插入。因此,如果您尝试使用phpmysql,那么在执行插入操作后,您可以轻松获得最后一个插入的id,而无需使用
$conn->insert\u id

$sql = "INSERT INTO comments(commenter, comment)
VALUES ('John', 'How are you?')";

if ($conn->query($sql) === TRUE) {
    $last_id = $conn->insert_id;
    echo "New record created successfully. Last inserted ID is: " . $last_id;
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$sql=“插入注释(注释者,注释)
价值观(“约翰”,“你好吗?”)”;
if($conn->query($sql)==TRUE){
$last\u id=$conn->insert\u id;
echo“已成功创建新记录。上次插入的ID为:.$Last\u ID;
}否则{
echo“Error:”.$sql.“
”$conn->Error; }

参考:

您应该检查SQL和php文档,了解如何获取最后一个插入的Id。您有任何代码与我们共享吗?请阅读您是否使用自动递增列类型。此外,请确定“删除”是什么意思。删除的记录是从数据集中永久消失,还是最终用户看不见?“我的问题是,调用数据库添加注释,然后再次调用数据库获取注释ID,感觉很奇怪。有没有更好的解决方案?”是的,但不是在MySQL中使用PostgreSQL,它支持
插入到。。。RETURNING*
插入将所有值返回到应用程序,而无需执行额外的选择来获取额外的信息,如增量和/或default列值。我最不推荐的是
mysql\ucode>函数,PHP7中已弃用并删除了整个API。不建议使用此驱动程序。这只是该函数的一个示例。作者可以使用mysqli_uu或PDO或他需要的任何其他驱动程序。我只是让他知道,有一个特殊的功能来检索最后一个插入ID。嘿,downvoter,有没有具体的理由否决它?