我正在尝试使用更新和联接从另一个表更新一个表。
我想使用category表id
更新book表category
字段(最近插入) > 字段 - 我哪里出错了?
UPDATE book
JOIN category
SET book.category = category.id
WHERE id = $query->insert_id
目前数据分别发送到两个表,没有任何更新。我只需要更新一行,我之前犯了这个错误并更新了每一行!
我对 pho/mysql 很陌生,所以欢迎任何帮助和指导。
更新
感谢@Benni的建议,我能够更新该行,但是它不是使用最近的插入更新,而是使用数据库中的第一行更新。见下文
我的类别表
id cat_name
2 Childrens
3 Science
1 Maths
23 Comedy
我的书 table
id category title
1 2 a title here
2 2 a title here
3 1 a title here
4 Comedy a title here
两个 ID
字段都是主键。
当我运行更新时,我的图书表更新为 2 = child ,而不是应有的 23 = 喜剧。
我的最后一个INSERT
$query = $conn->prepare("INSERT INTO `book` (title,category,author,isbn,subtitle) VALUES (?,?,?,?,?)");
$query->bind_param('sssis',
$title,
$category,
$author,
$isbn,
$subtitle
);
$query->execute();
最佳答案
您的 UPDATE
语句应如下所示。首先,您缺少 JOIN ON
条件,其次,将额外的条件从 WHERE
移至 JOIN ON
条件。
UPDATE book b
JOIN category c ON b.some_common_column = c.some_common_column
AND c.id = $query->insert_id
SET b.category = c.id
关于php - 更新查询两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319900/