-1

嗨,我想在我的 mysql 数据库中插入,但首先我想检查电子邮件是否在表黑名单中不可用。如果邮件在黑名单中,我想忽略插入。

$sqlinsertqueue = "
INSERT INTO queue Set
email = '$email'"
mysql_query($sqlinsertqueue,$db);

我的黑名单也有外地电子邮件。我的黑名单中的表名是黑名单。

4

2 回答 2

1

由于@EdGibbs 在我说这个之前删除了他的答案,所以他在正确的轨道上使用INSERT ... SELECT;

INSERT INTO queue (email) 
  SELECT 'dummy@example.com' FROM DUAL
  WHERE 'dummy@example.com' NOT IN (SELECT email from Blacklist);

一个用于测试的 SQLfiddle

您可能希望使用PDOorMySQLi代替已弃用的mysql_*api,或者至少mysql_escape_string()将电子邮件地址插入 SQL 查询之前对其进行处理。

于 2013-05-24T17:23:37.220 回答
0

像这样的东西:

$email = mysql_real_escape_string($email);

//check blacklist
$sql = "
SELECT
        COUNT(*)
FROM
        blacklist
WHERE
        email='$email'
";
$result = mysql_query($sql, $db);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}
$row = mysql_fetch_array($result,  MYSQL_NUM);

if ($row[0] == 0)
{
    //insert
    $sqlinsertqueue = "
INSERT INTO queue Set
email = '$email'";
    mysql_query($sqlinsertqueue,$db);    
}

不要使用 mysql_* 函数——它们已被弃用。

于 2013-05-24T17:07:58.113 回答