php - 使用 PDO 从一条语句在多个表中插入多条记录?

标签 php mysql sql pdo

我正在尝试构建一个表单以允许将关键字绑定(bind)到文章。此 SQL 语句直接用作查询,但我不知道如何将其打包为 pdo 语句。它将关键字添加到关键字表,并将关键字 ID + 文章 ID 添加到多对多映射表。

$insertK = $dbh->prepare("INSERT IGNORE INTO Keywords (Keyword)
VALUES (:KeywordID1);
INSERT INTO Keyword_Article (KeywordID, ArticleID)
VALUES ((SELECT KeywordID FROM Keywords WHERE Keyword = :KeywordID2), :ArticleID)");

$insertK->bindParam(':KeywordID1',  $keywordID);
$insertK->bindParam(':KeywordID2',  $keywordID);
$insertK->bindParam(':ArticleID',  $articleID);
$insertK->excecute();

我见过 PDO 有几种不同的插入方式,但没有一种是将两条语句插入到两个不同的表中。

编辑* 如果不可能,那么我如何确保在运行第二个查询之前完成第一个插入?

最佳答案

这是很常见的误解。
出于某种原因,人们不断尝试在一次调用中填充尽可能多的查询。
虽然实际上根本没有理由。

只需按照常规方式一项一项地运行所有查询即可。
绝对没有错。

关于php - 使用 PDO 从一条语句在多个表中插入多条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14700810/

相关文章:

php - 如何控制用户在我的网站上的事件?

c# - 此版本的 SQL Server 不支持已弃用的功能 'INSERT NULL into TIMESTAMP columns'

一个表中带有 2 个外键的 SQL 查询

php - 在 laravel 5 中计算数据透视表中的总和

php - 查询后从数组中获取正确的数据?

php - 使用 slim-jwt-auth 生成 token

php - MySQL 查询不返回新插入的记录

Mysql如何根据时间检索数据?

php - 在php中从多个表中搜索

mysql - 如何设置数据库 MySQL、Oracle、PostGreSQL 或 DB2 的最大磁盘大小?