我想确保在任何日期都没有预订双倍。我已经使用了select distinct和insert查询来调用数据。但是,数据仍然可以重复。
这里是整个代码:
<?php
error_reporting(0);
$con=mysqli_connect("localhost","root","","jpn");
$rol_no=@$_POST["rol_no"];
$ic=@$_POST["ic"];
$start=@$_POST["tarikh"];
$end=@$_POST["tarikhakhir"];
$bil=@$_POST["bilangan"];
$title=@$_POST["sebab"];
//insertion data tempahan
$sql="INSERT INTO tempahan(ic,start,end,bil,title) VALUES ('$ic','$start','$end','$bil','$title')
ON DUPLICATE KEY
UPDATE
ic='$ic'
,start ='$start'
,end='$end'
,bil='$bil'
,title='$title'
";
$result=mysqli_query($con,$sql);
if($row=mysqli_fetch_array($con,$result))
{
$rol_no=$row[0];
$ic=$row[1];
$start=$row[2];
$end=$row[3];
$bil=$row[4];
$title=$row[5];
}
//distinct data to avoid duplicate for date
$sql2= "SELECT DISTINCT start, end
FROM tempahan
ORDER BY start, end";
if(mysqli_query($con,$sql2))
{
echo "<script>alert('duplicate tarikh')</script>";
}
?>
答案 0 :(得分:0)
对唯一字段/字段集使用唯一索引。它是必需的,足以保证唯一性。然后,使用IGNORE选项插入或使用ON DUPLICATE KEY UPDATE插入。如果没有独特的索引,它们就无法正常工作。