首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未填充外键MySQL

问未填充外键MySQL
EN

Stack Overflow用户
提问于 2013-03-17 20:54:29
回答 1查看 287关注 0票数 0

未使用mysql在子表中填充外键。完全是编程和sql方面的新手。使用PHP/MYSQL创建Web site表单以填充人员数据,然后启动一个辅助Web Site表单来填充汽车维护数据。问题是来自父表的外键没有更新子表。任何帮助都是非常感谢的。

父表:

代码语言:javascript
复制
$sql = "CREATE TABLE persons 
(
Firstname CHAR(15),
Lastname CHAR(15),
Age INT,
PRIMARY KEY(Firstname)
)";

子表:

代码语言:javascript
复制
$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
)";

父表插入:

代码语言:javascript
复制
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

子表插入:

代码语言:javascript
复制
$sql="INSERT INTO cardata (Firstname,Manufacturer)
VALUES
('LAST_INSERT_ID()','$_POST[manufacturer]')";
EN

回答 1

Stack Overflow用户

发布于 2013-03-17 20:57:13

这是因为您正在插入一个字符串。LAST_INSERT_ID()不应该用单引号括起来,因为这会使它成为字符串文字。去掉单引号,它肯定会起作用。

代码语言:javascript
复制
$sql="INSERT INTO cardata (Firstname,Manufacturer)
VALUES (LAST_INSERT_ID(),'$_POST[manufacturer]')";

顺便说一句,如果变量的值来自外部,则查询容易受到SQL Injection的攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements,您可以避免使用单引号将值引起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15460937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档