php - 如何从 PHP 数组插入多个 MySQL 表行

标签 php mysql sql database

我是 PHP 和 MySQL 的新手,我有一项相当复杂的任务要完成以我目前的专业知识。它是这样的:

我正在尝试使用手工制作的 CMS 创建一个数据驱动的网站,允许不了解网页设计/网页开发的用户来管理它。当我尝试创建一个查询来处理插入到数据库中的数据时,我遇到了困难。这是一家书店,我在数据库中插入书籍。我想创建 3 个表,一个用于存储书籍本身,一个用于存储这些书籍所属的类别(例如文学、神秘、幻想等),并且由于这两个表之间的关系是多对多关系,我还创建了一个查找表来链接这两个表,使用 2 列填充了 2 个外键,代表两个表的 ID。

问题是我找不到如何在一列和不同的第二列(类别 ID)上插入具有相同 ID(图书 ID)的多行。类别将通过复选框以 HTML 形式选取。我在这里的几篇文章中看到我需要在 PHP 脚本中创建一个数组来存储用户选择的复选框中的数据,但是我完全不知道如何构建将这些复选框转换为多个 MySQL 表行的查询.

我见过有人建议将值内爆,但这会在一行中存储多个值,还是我弄错了?因为这不是我想要的,所以我希望(如果用户选中了 3 个类别复选框)在查找表中创建 3 行。

提前感谢您抽出时间来看我的问题。

最佳答案

$categories = array(1,2,3,4);
$bookId = 5;

foreach ($categories as $categoryId) {

    $data = array(
        'book_id' => (int)$bookId,
        'category_id' => (int)$categoryId
    );

    $query = "INSERT INTO `lookup` SET ";
    $fields = array();
    foreach ($data as $field => $value) {
        $fields[] = "`$field` = '$value'";
    }
    $fields = implode(', ', $fields);
    $query .= $fields;

    mysql_query($query);
}

关于php - 如何从 PHP 数组插入多个 MySQL 表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064426/

相关文章:

php - 错误 : unexpected update count received (Actual: 0, 预期 1)

mysql - 如何连接到使用 puphet 配置创建的 MySql 数据库服务器?

mysql - INNER JOIN 仅显示表中的第一行

WHERE 子句中的 SQL IN 运算符

php - is_dir 即使是目录也返回 false?

php - 本地主机上 Laravel 8 中的存储链接问题

php - 更改 WordPress 管理 URL

PHP MySQL 文章浏览量计数不起作用

schema - 在 MySQL 中提取现有模式,出现未知错误,需要帮助

mysql - SQL 查询从数据表中选择不同的值以及相应的列值