【问题标题】:Cannot add or update a child row: a foreign key constraint fails (Mysql and Foreign key)无法添加或更新子行:外键约束失败(Mysql 和外键)
【发布时间】:2016-05-23 14:31:42
【问题描述】:

当我尝试运行代码时,会出现此错误

无法添加或更新子行:外键约束失败 (hotel_info.results, 约束results_ibfk_5 外键 (CustomerID) 参考customer (CustomerID) 删除级联 更新级联)

这里是代码

$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 ;

因为这个错误,我已经卡了两天了,请帮忙。

【问题讨论】:

  • 我只是好奇,那个插入语句甚至包含值吗?您在 PHP 变量周围有单引号...
  • @JJ___ 您的代码中缺少 $id 值,而您在查询中传递了该值。
  • mysql_ 函数已被弃用,并且在 PHP 7 中已被删除。请立即停止使用它们,甚至不要用于锻炼。
  • 非常抱歉,这是一个错误,我已经编辑了代码。
  • Tomanow,是的,以前这些值能够插入到数据库中。但是一旦我添加了一个外键实体,那么现在一切都不同了

标签: php mysql database foreign-key-relationship


【解决方案1】:
$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.

【讨论】:

    【解决方案2】:

    从错误中可以清楚地看出外键约束失败。请检查您的 customer 表,该表必须具有您尝试在 results 表插入查询中插入的 CustomerID,即检查 $id 的值。您是否为 $id

    分配了任何值

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2012-10-09
      • 2015-06-06
      • 2016-08-09
      • 2011-03-31
      • 2013-08-10
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      相关资源
      最近更新 更多