如何在插入数据库之前插入数据库检查列是否为零
这是我试过的但是在更新之后仍然插入一个带有最后一个插入ID的新行,而我只是想让它更新而不插入
$lastID = mysqli_insert_id($DBcon);
$query2=$DBcon->query("SELECT * FROM mergeing");
$compare_value = "0";
if($row = $query2->fetch_array()) {
$merger = "INSERT into mergeing(donator_1) VALUES ('$lastID')";
if($row['donator_2'] !== "$compare_value") {
if ($DBcon->query($merger)) {
echo "success second";
}
}
}
while ($row = $query2->fetch_array()) {
$idd= $row["_id"];
$merg2 = "UPDATE mergeing SET donator_2='".$lastID."' WHERE _id=$idd";
if($row['donator_2'] === "$compare_value") {
if ($DBcon->query($merg2)) {
echo "success";
}
}
}
答案 0 :(得分:1)
您似乎想要检查是否存在具有特定donator_2
值的记录,如果是,则需要更新。如果不存在此类值,则需要插入新记录。
然后你的代码看起来像这样:
$lastID = mysqli_insert_id($DBcon);
$compare_value = 0;
$DBcon->query("UPDATE mergeing SET donator_2 = $lastID WHERE donator_2 = $compare_value");
if ($DBcon->affected_rows) {
echo "success: updated";
} else {
$DBcon->query("INSERT into mergeing(donator_1) VALUES ($lastID)");
echo "success: inserted";
}
根据您的实际使用情况,您可能还想在插入新记录时设置donator_2
值。
请注意,如果$compare_value
由用户输入或您无法预测的其他来源确定,则应使用预准备语句,否则代码将对SQL注入开放。