2015-12-08 70 views
0

我在数据库期末考试项目中遇到参照完整性错误时有点麻烦。我试图弄清楚自己,但无济于事,我希望这里有人能指出我朝着正确的方向。参照完整性错误

问题是我有三张表,前两张是第三张表的父表。我正在尝试构建一个php脚本,它将更新两个父表,然后将数据插入到子表中。我迄今,我想会的工作,但每当我尝试使用它,我得到以下错误:

INSERT INTO Purchases (CustomerID, PurchaseOrderNo, PurchaseTotal, DateOfPurchase, SalesPersonID,SpecialOrder) VALUES ('10', '0000','100.00','0000-00-00','5555','N')

Cannot add or update a child row: a foreign key constraint fails ('xxxxxx'.'Purchases', CONSTRAINT 'Purchases_ibfk_1' FOREIGN KEY ('CustomerID') REFERENCES 'CustomerInfo'('CustomerID') ON DELETE CASCADE ON UPDATE CASCADE)'

哪里出了问题有什么想法?

 ########## FOREIGN KEY CHECK START ########## 
$sql = "select count(*) as count from CustomerInfo where '$customerid' = CustomerID"; 
$result = mysqli_query($con,$sql) 
or die('Error: ' . mysql_error()); 

$row = mysqli_fetch_assoc($result); 
    if ($row['count']==0){ 
    "INSERT INTO CustomerInfo ('CustomerID') VALUES ('$customerid');"; 
    echo "<p>Customer ID Not Found. <br />New CustomerID Created.</p>"; 
    } 

$sql2 = "select count(*) as count from EmployeeInfo where '$salespersonid' = SalesPersonID;"; 
$result2 = mysqli_query($con,$sql) 
or die('Error: ' . mysql_error()); 
$row2 = mysqli_fetch_assoc($result2); 

if ($row2['count']==0){ 
"INSERT INTO EmployeeInfo ('SalesPersonID')VALUES ('$salespersonid');"; 
echo "<p>Salesperson ID Not Found. <br />New Salesperson ID Created.</p>"; 
} 

    ########## FOREIGN KEY CHECK END ########## 

    ########## DATA ENTRY SQL STATEMENT START ########## 
$sql3 = "INSERT INTO Purchases (CustomerID, 
      PurchaseOrderNo, 
      PurchaseTotal, 
      DateOfPurchase, 
      SalesPersonID, 
      SpecialOrder) 
VALUES ('$customerid', 
     '$purchaseorderno', 
     '$purchasetotal', 
     '$dateofpurchase', 
     '$salespersonid', 
     '$specialorder')"; 
    ########### DATA ENTRY SQL STATEMENT END ########## 

    ########## INPUT SUCCESS/FAILURE REPORTING######### 
if (mysqli_query($con, $sql3)) { 
    echo "<P>Record Successfully Created</P><BR />"; 
} else { 
    echo "Error: " . $sql9. "<br>" . mysqli_error($con); 
} 
mysqli_close($con); 
echo "<P>Connection Successfully Closed.</P>"; 
+0

MySQL的确切错误是什么?我从来没有听说过“参照完整性错误”... – Rudie

+1

它告诉你,你试图插入的CustomerID不存在于CustomerInfo表中 – KorreyD

+0

如果我们看到表定义可能会有所帮助。 –

回答

0

您没有执行您的插入查询,以CustomerInfoEmployeeInfo

$sql = "select count(*) as count from CustomerInfo where '$customerid' = CustomerID"; 
    $result = mysqli_query($con,$sql) 
    or die('Error: ' . mysql_error()); 

    $row = mysqli_fetch_assoc($result); 
     if ($row['count']==0){ 

    ###THE NEXT LINE DOESN'T DO ANYTHING### 
     "INSERT INTO CustomerInfo ('CustomerID') VALUES ('$customerid');"; 
     echo "<p>Customer ID Not Found. <br />New CustomerID Created.</p>"; 
     } 

而且你不想把周围的列名的单引号在你的INSERT语句所以不是作者:

INSERT INTO CustomerInfo ('CustomerID') VALUES ('$customerid') 

你想要的:

INSERT INTO CustomerInfo (CustomerID) VALUES ('$customerid')