两个查询不同,插入会产生错误


two queries distinct and insertion gives error

我想确保任何日期都没有双重预订。 我使用了"选择非重复"和"插入查询"来调用数据。 但是,数据仍然可以重复。

这是整个代码:

<?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>";
                  }
 ?>

对唯一字段/字段集使用唯一索引。它是必需的,足以保证唯一性。然后,使用忽略选项或重复键更新插入。如果没有唯一的索引,它们就无法工作。