我有一个输入类型为time的表,我想首先检查是否有一行包含当前日期和员工ID,如果是,我更新输入的值如果不是我插入一个新行。这就是我尝试过但它总是插入一个新行,即使条件存在:
<?php
$E1=$_POST['E1'];
$connect = mysqli_connect("localhost", "root", "ntr-ktb123", "absence");
$sql1="SELECT * FROM retards WHERE Date ='Curdate()' AND
IdEmpl='".$_POST["IdEmp"]."' ;";
$result1=mysqli_query($connect,$sql1);
if(!$result1){
die('ERREUR SQL ! <br>'.$sql.'<br>'.mysqli_error());}
if($dt=mysqli_fetch_array($result1,MYSQLI_ASSOC)){
$sql="update retards set E1='$E1' where IdEmpl='".$_POST["IdEmp"]."' AND
Date=CURDATE();";
}
else{
$sql="insert into retards(IdEmpl,Date,E1) values
('".$_POST["IdEmp"]."',CURDATE(),'$E1'); ";
}
$result = mysqli_query($connect, $sql);
if (!$result)
{
echo("Error description: " . mysqli_error($connect));
}
else {
$message ="Effectué avec succès!";
echo "<script type='text/javascript'>alert('$message'); </script>";
}
mysqli_close($connect);
?>
答案 0 :(得分:3)
这称为upsert,可以使用insert ... on duplicate key update
语法在mysql中完成。
insert into t (a, b, c) values (?, ?, ?)
on duplicate key update b = ?
您的表应该在感兴趣的列上定义适当的唯一索引或主键。