0

我有三张桌子,

Table1 有 id(pk) 和名称 Table2 有 id(pk) 类别 Table3 是一个联结表,有 id(pk) 和两个外键:table1_id(来自提到的 table1 的pk)和 table2_id(来自提到的 table2 的pk)

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

所有这些都按预期工作。

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

在表单页面中,如果输入的名称已经存在于 Table1 中,但下拉列表和名称的组合比以前输入的内容是唯一的,我希望名称不要插入到Table1 中,但是组合插入到Table3 中

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       |
4

1 回答 1

0

表格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'])."'))
    ),''
);"

表3

"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']位可能需要稍有不同。

于 2013-06-11T15:19:57.813 回答