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


New entry in junction table but avoid duplicate in table

我有三个表,

表1有id(pk)和name表2有id(pk)和category表3是一个连接表,它有id(pk)和两个外键:table1_id (pk来自上述table1)和table2_id (pk来自上述table2)

表单页面有一个输入框(名称)和一个从表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

"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'])."'))
    ),''
);"
<标题> Table3 h1> 以前没有试过,但我相信它会起作用的。此外,根据您的PHP代码,mysql_real_escape_string($_POST['name'])(int)$_POST['tableX_id']位可能需要稍微不同。