PHP 如何一次多次插入表

标签 php mysql

我的数据库存在逻辑问题,请让我解释一下。这是我的系统:

  • 我有用户和管理员。
  • 管理员可以创建项目,如果需要,他们可以在项目中添加相关用户。
  • 1 个用户可以处理多个项目,1 个项目可以拥有多个用户。(多对多)

我建立了关系数据库,它工作得很好。但问题是,哪些用户正在处理哪些项目?我不知道如何将它们插入数据库。管理员可以从列表中选择用户,然后所选用户应与依赖项目一起存储。但我无法将其插入数据库。这是我的表格和一些代码。

--projects--      --users--        --projectUsers--
userId            userId           userId  
creationDate      registerDate     projectId
projectId         email
title             permission
priority          name
content           surname
endDate           birthDate
                  password

$sql="INSERT INTO projects (
        projectId, 
        userId, 
        creationDate, 
        title,
        priority,
        content,
        endDate     
        )VALUES(
        '$projectId', 
        '$userId', 
        '$creationDate', 
        '$title',
        '$priority',
        '$content',
        '$endDate'
        )";

        $result=mysql_query($sql) or die (mysql_error());


        $sql2="INSERT INTO projectUsers (
        projectId, 
        userId  
        )VALUES(
        '$projectId', 
        '$userId'
        )";

        $result2=mysql_query($sql2) or die (mysql_error());

表“projectUsers”存储 2 个外键。当管理员创建项目时,他的 userId 和新的projectId 存储在“projectUsers”中,并且还存储在“projects”表中。但是管理员将选择该项目所依赖的用户,并且他可以一次选择多个用户。我应该如何在数据库上插入依赖用户。而且我不想连续存储超过 1 个用户。我应该能够回答这个问题:

  1. 哪些用户正在处理哪些项目?
  2. 哪些用户正在参与该项目?
  3. 该用户正在从事哪个(哪些)项目?

示例:管理员创建一个新项目并选择 3 个从属用户。我想将它们插入表“projectUsers”。当管理员创建项目时,我想看到我的“projectUser”表,如下所示:

userId    projectId
1          1
2          1
3          1

P.S:“项目”表中的“userId”显示了该项目的创建者。就像一个主人一样。

最佳答案

从项目表中删除 userId,无论如何,您都会将该信息存储在 ProjectUsers 关联表中。对于参与项目的每个用户,您必须在 ProjectUsers 表中创建单独的行。

从那时起,您的所有检索查询都只是基本的三个表连接:

<强>1。哪些用户正在处理哪些项目?

SELECT * FROM Projects p
LEFT JOIN ProjectUsers pu
    ON p.projectId = pu.projectId
LEFT JOIN Users u
    ON pu.userId = u.userId

<强>2。哪些用户正在参与该项目?

SELECT * FROM Projects p
LEFT JOIN ProjectUsers pu
    ON p.projectId = 123 AND p.projectId = pu.projectId
LEFT JOIN Users u
    ON pu.userId = u.userId

<强>3。该用户正在从事哪些项目?

SELECT * FROM Users u
LEFT JOIN ProjectUsers pu
    ON u.userId = 123 AND u.userId = pu.userId
LEFT JOIN Projects p
    ON pu.projectId = p.projectId

关于PHP 如何一次多次插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374900/

相关文章:

javascript - 尝试使用 JSON 在 HTML 中显示 PHP 回显

php - 谷歌 PHP API 客户端 : CA cert error

同一个 SELECT 中的 PHP FOUND_ROWS 和 COUNT

MySQL删除表中的重复行

MySql 在 Ubuntu 服务器上崩溃 'reading authorization packet'

php - Laravel 和数据库设计

php - 不确定 Laravel 在接口(interface)实现方面做了什么

php - webview android 中未显示 Paypal 支付页面 credicard 选项

android - 无法在索引 1 处绑定(bind)参数,因为索引超出范围。该语句有 0 个参数。”

mysql - 唯一索引不基于单词顺序?