我正在将添加的工作时间插入到我的数据库中,但问题是如果我为同一个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)
一种优雅的方法是将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)