php - 更新查询两个表

标签 php mysql sql

我正在尝试使用更新和联接从另一个表更新一个表。

我想使用categoryid更新bookcategory字段(最近插入) > 字段 - 我哪里出错了?

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/

相关文章:

php - 如何最大化 Get 查询长度?

php - Symfony 3/APCu + PHP7

php - 如何获取数据库的内容而不是索引

mysql - 连接 mySQL 上的排序依据和索引

php - 如果字段为空,则不进入数据库

php - UTF-8贯穿始终

mysql - 运行 Ruby 脚本时在 Mac 上正确编码,但在 Ubuntu VPS 上不正确

php - Codeigniter $query->row() 方法不适用于字符串参数

mysql - 如何选择同一列中出现的相同 ID 值?

c# - DBcontext.Database.Log : executable sql query