2016-02-12 129 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

我編輯了代碼..這是一個錯誤 –

相關問題