两个查询不同,插入给出错误

时间:2016-04-27 03:22:28

标签: php mysql

我想确保在任何日期都没有预订双倍。我已经使用了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>";
                  }
 ?>

1 个答案:

答案 0 :(得分:0)

对唯一字段/字段集使用唯一索引。它是必需的,足以保证唯一性。然后,使用IGNORE选项插入或使用ON DUPLICATE KEY UPDATE插入。如果没有独特的索引,它们就无法正常工作。