使用php更新数据库

dan*_*dan 7 php mysql sql

我正在将添加的工作时间插入到我的数据库中,但问题是如果我为同一个id(afnumber)多次插入,则会保留旧值和新值.新的val不会取代旧的.我正在尝试更新它(评论部分)但是根本没有成功.总是一样的结果.我正在尝试使用if/else条件使其工作,以检查列中的值是否为空,然后插入.如果没有更新,if条件语句中的任何帮助?

我获取更新输出的方式:

   if(isset($_POST['submit'])){

    if(AddedWH IS NULL) THEN

        $addedhours = $_POST['AddedHours'];
        $selectaf = $_POST['SelectAF'];
              $sql1="INSERT INTO `editedworkhours` (`AFNumber`,`AddedWH`) VALUES('$selectaf','$addedhours')";

             $getResult =mysql_query($sql1);
             if(mysql_affected_rows() > 0)
             {

             } 
             else{

             }

    else


                $tempname = $row['Field'];
                $sql2 = "UPDATE editedworkhours SET AddedWH ='".$_GET["addedhours"]."' WHERE AFNumber='".$_GET["selectaf"]."'";
                $result2 = mysqli_query($con,$sql2);
                if ($con->query($sql2) === TRUE) {
                } else {
                    echo "Error: " . $sql2 . "<br>" . $con->error;
                    echo '<script>swal("Error", "Something went wrong '.$con->error.'", "error");</script>';
                }
     echo '<script>swal("Success", "Changes have been saved", "success");</script>';  


} END IF;
echo $menu;
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 5

一种优雅的方法是将afnumber表定义为表的主键:

ALTER TABLE `editedworkhours` 
ADD CONSTRAINT `editedworkhours_pk` PRIMARY KEY (`afnumber`);
Run Code Online (Sandbox Code Playgroud)

编辑:
正如戈登在评论中指出的那样,如果您已有主键,则可以添加一个唯一约束:

ALTER TABLE `editedworkhours` 
ADD CONSTRAINT `editedworkhours_uc` UNIQUE (`afnumber`);    
Run Code Online (Sandbox Code Playgroud)

一旦你有了约束,就可以使用MySQL的insert on duplicate key update子句:

INSERT INTO `editedworkhours`
(`afnumber`, `addedwh`)
VALUES ($selectaf, $addedwh)
ON DUPLICATE KEY UPDATE `addedwh` = VALUES(`addedwh`)
Run Code Online (Sandbox Code Playgroud)