簡體   English   中英

未填充外鍵MySQL

[英]Foreign Key Not Populated MySQL

未使用mysql在子表中填充外鍵。 編程和sql方面的新手。 創建網站表單以使用PHP / MYSQL填充人員數據,然后啟動輔助網站表單以填充汽車維護數據。 問題是來自父表的外鍵沒有更新子表。 任何幫助深表感謝。

父表:

$sql = "CREATE TABLE persons 
(
Firstname CHAR(15),
Lastname CHAR(15),
Age INT,
PRIMARY KEY(Firstname)
)";

子表:

$sql = "CREATE TABLE cardata
(
CID INT NOT NULL AUTO_INCREMENT, 
Firstname CHAR(15) NOT NULL,  
Manufacturer CHAR(25),
Model CHAR(15),
Year INT,
`Oil Miles` INT,
`Oil Date` DATE,
`Rotation Miles` INT,
`Rotation Date` DATE,
PRIMARY KEY(CID),
FOREIGN KEY (Firstname) REFERENCES persons (Firstname)
ON  UPDATE CASCADE ON DELETE CASCADE
)";

父表插入:

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

子表插入:

$sql="INSERT INTO cardata (Firstname,Manufacturer)
VALUES
('LAST_INSERT_ID()','$_POST[manufacturer]')";

這是因為您要插入字符串。 LAST_INSERT_ID()不應用單引號引起來,因為這會使它成為字符串文字 刪除單引號,它肯定會起作用。

$sql="INSERT INTO cardata (Firstname,Manufacturer)
VALUES (LAST_INSERT_ID(),'$_POST[manufacturer]')";

作為一個旁注,查詢是脆弱的SQL Injection ,如果變量的值(一個或多個 )從外面走了進來。 請查看下面的文章,以了解如何防止它。 通過使用PreparedStatements您可以擺脫在值周圍使用單引號的麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM