Php 在连接表中添加新条目,但避免在表中重复
我有三张桌子 表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中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中,但下拉列表和名称的组合比以前输入的名称唯一,我希望
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'])."'))
),
);"