• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

PHP&MYSQL – 不插入相同的数据

php 来源:php 101 guy 14次浏览

我需要你的帮助。我陷入了一个难以想象的地步,那就是如何阻止产品每天在网络表单上被预订两次。PHP&MYSQL – 不插入相同的数据

我有41个产品每天出租。

我的问题是:如果客户预订产品#4(pg_no)并且日期为26-06-2017,则另一客户端无法在相同的时间段内预订相同的产品。

如果客户选择同样的产品和日期,则消息应该会出现说“已经订好 – 请选择其他日期”

而且,我已经定义在数据库级别什么?

我们将非常感谢您的帮助。

请注意:此规则仅适用于产品#(pg_no),并且日期字段不允许在同一天使用。

<?php 
//connecting string 
include("dbconnect.php"); 
//assigning 
$pg_no=$_REQUEST['pg_no']; 
$name=$_REQUEST['Name']; 
$tele=$_REQUEST['Tele']; 
$city=$_REQUEST['City']; 
$date=$_REQUEST['Date']; 

//checking if pg_no and Date are same 
$check=mysqli_query($db_connect,"SELECT * FROM lstclient WHERE pg_no='{$pg_no}', Date='{$date}'"); 

    if(mysqli_fetch_row($check) ==0) 
    { 
     echo "Already booked please select another date<br/>"; 
    } 
    //if not the insert data 
    else 
    {   
     $query=mysqli_query($db_connect,"INSERT INTO lstclient(pg_no,Name,Tele,City,Date) VALUES('$pg_no','$name','$tele','$city','$date')") or die(mysql_error()); 
     } 
     mysqli_close($db_connect); 

    // messaging 
    if($query) 
     { 
      header("location:index.php?note=failed"); 
     } 
     else 
     { 
      header("location:index.php?note=success"); 
     } 

    ?> 


===========解决方案如下:

在两列之间的表上创建一个UNIQUE KEY约束。

ALTER TABLE lstclient ADD CONSTRAINT `pg_no_date` UNIQUE (pg_no, date) 

然后,当您尝试插入违反此约束的行时,mysql将引发错误。你应该捕捉到这个MySQL错误并且回应正确的错误。

if(mysqli_errno() == 1062) { 
    // Duplicate key error 
} 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)