php - PDO 使用外键插入到表中

标签 php mysql pdo insert-update

我在使用 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/

相关文章:

php - 使用 mysql 获取正在进行的月份的下个月记录

php - Symfony2 - Ajax 搜索

java - 为什么 Hibernate 不为多对多关系表生成主键?

php - 使用 PDO 插入带有特殊字符的值

php - PDO 没有选择通过带有 FETCH_CLASS 的构造函数创建对象的选项是有原因的吗?

php - 如何正确连接具有多对一关系的表

php - 开发成本、框架与纯 PHP

php - mysqli 使用带有准备好的语句和查询的 select *

php - 如何检索存储在数据库中的图像?

mysql - 在连接字符串中排除敏感数据的优点和缺点?