2016-02-12 101 views
0

当我试图运行的代码,这个错误显示出来不能添加或更新子行,外键约束失败(MySQL和外键)

不能添加或更新子行,外键约束失败 (hotel_inforesults,约束results_ibfk_5外键 (CustomerID)参考文献customerCustomerID)ON DELETE CASCADE ON UPDATE CASCADE)

以下是代码

$result = mysql_query("select customer.CustomerID from customer inner join results on customer.CustomerID = results.CustomerID where customer.Username = '".$aid."'"); 
      if (false === $result) 
      { 
       echo  mysql_error(); 
      } 

if (isset($_POST["submitbtn"])) 
{ 
    $LP = $_POST["LP"]; 
    $budget = $_POST["budget"]; 
    $checkin = $_POST["CheckIn"]; 
    $checkout = $_POST["CheckOut"]; 
    $unit = $_POST["unit"]; 
    $smokep = $_POST["SmokeP"]; 
    $spreq = $_POST["sp_req"]; 


     if($checkin>$checkout) 
     { 
     ?> 
     <script type="text/javascript"> 
       alert("End Date must greater than Start Date."); 
     </script>   

     <?php 
     } 
     else 
     { 
      $query = mysql_query("INSERT INTO results(`LP`, `budget`, `CheckIn`, `CheckOut`, `unit`, `SmokeP`, `sp_req`, `CustomerID`) values ('$LP', '$budget', 
             '$checkin', '$checkout', '$unit', '$smokep', '$spreq', '$result')");  

      if (false === $query) 
      { 
       echo  mysql_error(); 
      } 

      echo "Reservation form has been submitted!<br> 
       <a href=view.php>view all</a>"; 

     } 
} 

这里是SQL

CREATE TABLE IF NOT EXISTS `results` (
    `BookID` int(10) NOT NULL AUTO_INCREMENT, 
    `LP` varchar(50) DEFAULT NULL, 
    `budget` varchar(50) DEFAULT NULL, 
    `CheckIn` varchar(50) DEFAULT NULL, 
    `CheckOut` varchar(50) DEFAULT NULL, 
    `unit` int(50) DEFAULT NULL, 
    `SmokeP` varchar(50) DEFAULT NULL, 
    `sp_req` varchar(255) DEFAULT NULL, 
    `CustomerID` int(10) NOT NULL, 
    PRIMARY KEY (`BookID`), 
    KEY `Username` (`CustomerID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=48 ; 

CREATE TABLE IF NOT EXISTS `customer` (
    `CustomerID` int(10) NOT NULL AUTO_INCREMENT, 
    `Username` varchar(50) NOT NULL, 
    `Password` varchar(50) NOT NULL, 
    `Email` varchar(50) NOT NULL, 
    `ContactNo` int(10) NOT NULL, 
    PRIMARY KEY (`CustomerID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 

我已经坚持了,因为这个错误两天,请大家帮忙。

+0

我只是好奇,这是否INSERT语句甚至含有值?你的PHP变量有单引号...... – Tomanow

+0

@JJ___在代码中缺少'$ id'的值,并且你在查询中传递了这个值。 – Nehal

+0

mysql_函数已被弃用,并已在PHP 7中被删除。请停止使用它们一次,甚至没有锻炼。 –

回答

1

从错误中可以明显看出外键约束失败。请检查您的客户表,该表必须有客户ID您试图插入结果的$ id表插入查询即校验值。你有没有分配任何价值$ ID

+0

我编辑了代码..这是一个错误 –

0
$query = mysql_query("INSERT INTO results(`LP`, `budget`, `CheckIn`, `CheckOut`, `unit`, `SmokeP`, `sp_req`, `CustomerID`) values ('$LP', '$budget', 
             '$checkin', '$checkout', '$unit', '$smokep', '$spreq', '$id')");  

In above query value for $id not set so first assign value to that. 
+0

我编辑了代码..这是一个错误 –

相关问题