Php 在连接表中添加新条目,但避免在表中重复

Php 在连接表中添加新条目,但避免在表中重复,php,mysql,insert,duplicates,Php,Mysql,Insert,Duplicates,我有三张桌子 表1有id(pk)和名称 表2包含id(pk)和类别 表3是一个连接表,具有id(pk)和两个外键:表1_id(上述表1中的pk)和表2_id(上述表2中的pk) 表单页面有一个输入框(名称)和一个下拉列表,可以从表2中获取用户的选项。 提交表单时,将在Table1.name中输入名称,并使用下拉选项的id和输入名称的id填充Table3 所有这些都在按预期进行 我正在寻找答案的场景是: 在表单页面中,如果输入的名称已存在于表1中,但下拉列表和名称的组合比以前输入的名称唯一,我希望

我有三张桌子

表1有id(pk)和名称 表2包含id(pk)和类别 表3是一个连接表,具有id(pk)和两个外键:表1_id(上述表1中的pk)和表2_id(上述表2中的pk)

表单页面有一个输入框(名称)和一个下拉列表,可以从表2中获取用户的选项。 提交表单时,将在Table1.name中输入名称,并使用下拉选项的id和输入名称的id填充Table3

所有这些都在按预期进行

我正在寻找答案的场景是:

在表单页面中,如果输入的名称已存在于表1中,但下拉列表和名称的组合比以前输入的名称唯一,我希望名称不插入表1中,而将组合插入表3中

Table1
| id |   name   |
-----------------
| 1  |   John   |
| 2  |   Mark   |

Table2
| id | category |
-----------------
| 1  |   Red    |
| 2  |   Blue   |

Table3
| id | table1_id | table2_id |
------------------------------
| 1  |   1       |   1       |
| 2  |   1       |   2       |
表1 表3
我以前没试过,但我相信它会管用的。另外,根据您的PHP代码,
mysql\u real\u escape\u字符串($\u POST['name'])
(int)$\u POST['tableX\u id']
位可能需要稍微不同。

不太正确,我提到了两个条件,其中一个条件涉及插入表3。
"IF(
    (
        SELECT name
        FROM Table1
        WHERE name='".mysql_real_escape_string($_POST['name'])."'
    ) IS NOT NULL,
    '',
    (
        INSERT INTO Table1
        VALUES(NULL,'".mysql_real_escape_string($_POST['name'])."'))
    ),''
);"
"IF(
    (
        SELECT id
        FROM Table3
        WHERE table1_id='".(int)$_POST['table1_id']."'
        AND   table2_id='".(int)$_POST['table2_id']."'
    ) IS NOT NULL,
    '',
    (
        INSERT INTO Table3
        VALUES('".(int)$_POST['table1_id']."','".(int)$_POST['table2_id'])."'))
    ),
);"