我有三张桌子,
Table1有id(pk)和名字 表2有id(pk)和类别 Table3是一个联结表,有id(pk)和两个外键:table1_id(pk来自提到的table1)和table2_id(pk来自提到的table2)
表单页面有一个输入框(名称)和一个从Table2获取选项的下拉列表。 提交表单时,将在Table1.name中输入名称,并使用下拉选项的ID和输入的名称的ID填充Table3。
所有这一切都按预期工作。
我正在寻找答案的情况是:
在表单页面中,如果输入的名称已存在于表1中,但下拉列表和名称的组合是唯一的,而不是之前输入的内容,我希望名称不 INSERTed in表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 |
答案 0 :(得分:0)
"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'])."'))
),
);"
我以前没试过,但我相信它会奏效。此外,根据您的PHP代码,mysql_real_escape_string($_POST['name'])
和(int)$_POST['tableX_id']
位可能需要稍微不同。