我在使用 mysql 和 PDO 时遇到了一些困难。
我想向数据库中插入一个产品,但是产品表包含外键。插入的时候自然不会知道Foreign key ID。我这样做对吗???有没有更好的方法来解决这个问题?
表格产品
- Id PK 人工智能 int
- 名称 Varchar(20)
- CategoryId Int FK
- TypeId Int FK
表格类别
- Id Int PK
- 猫 varchar(20)
表格类型
- Id Int PK
键入 varchar(20)
$type = 'Gloves'; $category = 'Clothing'; $sql = 'INSERT INTO Products SET Name = :name, CategoryId = :catId, TypeId = :typeId WHERE CategoryId IN (SELECT Id FROM Categories WHERE Cat = :category) AND TypeId IN (SELECT Id FROM Types WHERE Type = :type)' $stmt = $db->prepare($sql); $stmt->execute(array(':name' => 'Pink childrens gloves', ':category' => $category, ':type' => $type));
如以下评论所述:通常,我会从选择框中获取 ID。我不能这样做,因为它将是执行查询的脚本,而不是用户。
最佳答案
你确定这是你想要的吗?
$sql = 'INSERT INTO Products
SET Name = :name
WHERE
CategoryId IN (SELECT Id FROM Categories WHERE Cat = :category) AND
TypeId IN (SELECT Id FROM Types WHERE Type = :type)'
我认为您正在尝试使用 UPDATE
$sql = 'UPDATE Products
SET Name = :name
WHERE
CategoryId IN (SELECT Id FROM Categories WHERE Cat = :category) AND
TypeId IN (SELECT Id FROM Types WHERE Type = :type)'
关于php - PDO 使用外键插入到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13937280/