PHP如何一次多次插入表


PHP How to INSERT to Table Many Times in Once

我的数据库有一个逻辑问题,让我解释一下。这就是我的系统:

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

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

--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和新项目id存储在"projectUsers"表中,也存储在"projects"表中。但是管理员将选择哪些用户将依赖于这个项目,他可以一次选择多个。如何在数据库上插入依赖用户?而且我不想在一行中存储超过1个用户。我应该能够得到这个查询的答案:

  1. 哪些用户正在哪个项目上工作?
  2. 哪些用户正在处理这个项目?
  3. 该用户在哪个项目上工作?

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

userId    projectId
1          1
2          1
3          1

p。S:"projects"表上的"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

首先需要为外键创建Projects和Users,然后简单地创建1,2 &3.为选中的每个项目添加每个用户。

INSERT INTO ProjectUsers (userId, projectId) VALUES (1, 1);
INSERT INTO ProjectUsers (userId, projectId) VALUES (2, 1);
INSERT INTO ProjectUsers (userId, projectId) VALUES (3, 1);

除此之外,我们真的很难理解你的问题的背景。您已经将问题标记为SQL,但是您有执行INSERT正确的查询。我们没有一个完整的表定义——如果那样会引发错误的话。

如果你的问题是在PHP中,那么你有太多的SQL标签,因为这是人们试图解决的问题。

请,请,请将项目中的UserId更改为OwnerUserId -关于该数据字段所代表的内容的描述与指示它连接到的表一样重要,因此将这些连接在一起可以为字段提供完整的含义,并消除歧义。