在更新

时间:2017-03-11 11:46:18

标签: php mysql

如何在插入数据库之前插入数据库检查列是否为零

这是我试过的但是在更新之后仍然插入一个带有最后一个插入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";
            }
        }
    } 

1 个答案:

答案 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注入开放。