0

我有这个脚本将新用户添加到 MySql,现在我已经为黑名单名称创建了辅助 Mysql 表。所以我希望 MySql 在允许插入数据之前检查黑名单名称。

$all = implode(",",$_POST);
$all = explode(",",$all);

$insert = "INSERT INTO name VALUES (";  
for ($x=0;$x<5;$x++) 
{
    $all[$x] = clean($all[$x]);
    if ($all[$x] == "" || strlen($all[$x]) > 300)
    die("<p>Please fill in the whole form." . $x);

    $insert .= "'" . $all[$x] . "',";
}

$insert .= "'')";
$res = @mysql_query($insert) ;

我有改变

$insert = "INSERT INTO name VALUES (";  
for ($x=0;$x<5;$x++) NOT IN (SELECT `blacklist` FROM `exclude`)

但没有得到我要找的东西。我该如何解决?

4

2 回答 2

0

据我所知,您将不得不使用与名称表共享的该表的任何键对您的排除表进行单独选择,以检查该用户不在排除列表中。没有 INSERT 语法允许像 INSERT 这样的概念,除非另一个表中存在某些东西。

于 2013-07-30T20:52:19.917 回答
0

事实上,你可以(ab)使用INSERT ... SELECT做你想做的事:

-- insert one name:
INSERT INTO user SELECT "john" FROM DUAL 
                               WHERE "john" NOT IN (SELECT name FROM blacklist);
INSERT INTO user SELECT "ringo" FROM DUAL 
                                WHERE "ringo" NOT IN (SELECT name FROM blacklist);

-- insert several names
CREATE TEMPORARY TABLE candidate(name char(40));
INSERT INTO candidate VALUES
    ("paul"), ("ringo"), ("georges");

INSERT INTO user SELECT name FROM candidate 
                             WHERE name NOT IN (SELECT name FROM blacklist);

有关示例,请参见http://sqlfiddle.com/#!2/7ea68/1 。

于 2013-07-30T21:15:28.343 回答