gpt4 book ai didi

php - 当我向mysql插入数据时,它插入了两条数据,我不知道为什么

转载 作者:行者123 更新时间:2023-11-29 11:16:56 25 4
gpt4 key购买 nike

当我使用此代码插入时,它插入了两个数据,但我不知道如何修复它

$sql = "SELECT Version_id FROM versions ORDER BY Version_id DESC LIMIT 1;";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$lastVersion =$row["Version_id"];
}
}
echo($lastVersion);
$lastVersion++;
$sql = "INSERT INTO versions (version)
VALUES ('v$lastVersion')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

最佳答案

虽然我不太明白“两个数据”的含义,但我确实发现您的代码存在多个问题。

首先,它的效率极低,并且容易出现 race conditions 。这也是非常错误的,因为它没有达到你想要的效果。更不用说应该替换为原生数据库功能了。

其中大部分问题只需将 version_id 字段更改为 AUTO_INCRMENT 即可修复。这将自动为新记录提供集合中的下一个可用 ID,正如您想要执行的操作一样。然后您可以使用“lastInsertId()”检索此ID

这将使您帖子中的所有代码变得多余,并且只需要您在实际插入数据时执行类似的操作:

$sql = "INSERT INTO `version`(`setting`, `date`) VALUES (:setting, :date)";
$stmt = $db->prepare ($sql);
$res = $stmt->execute ($data);
$newID = $db->lastInsertId ();

此后,新版本 ID 存储在 $newID 变量中。

当然,如果您出于某种原因想要UPDATE版本ID,那么INSERT是错误的命令。另外,为什么要使用整个表来表示基本上是简单的版本号?简而言之,你的整张 table 对我来说没有多大意义。
我建议解释其背后的基本原理,以便我们可以提出一些您可以使用的更好的解决方案。

关于php - 当我向mysql插入数据时,它插入了两条数据,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39570327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com