如果发送的表中不存在电子邮件,请插入电子邮件

时间:2011-04-19 21:54:49

标签: php mysql

我有两个mysql表sentqueue。我将成员插入queue表。但是我不想再次插入相同的成员 - 如果它们在sent表中。他们已经收到了邀请。

如何检查插入queue的成员在sent中是否不存在?

        if (insertEmail($email)) {
            echo "<span class='success'>Successfully added " . $email . " to the queue</span><br/>";
        } else {
            echo "<span class='fail'>Error we already sent " . $email . " an invitation email.</span><br/>";
        }

 function insertEmail($email)
    {
        mysql_query("INSERT INTO queue (email) SELECT `$email` FROM dual WHERE `$email` NOT IN (SELECT `email` FROM `sent`)");
    }

Quassnoi帮我查询,但我觉得我做错了。当我尝试将电子邮件插入队列时,我总是得到Unknown column '[removed]@gmail.com' in 'field list'

1 个答案:

答案 0 :(得分:3)

也许您无法更改表格,但如果这样做,您是否考虑在队列表上创建状态列并完全删除已发送的表?

最简单的版本是:

表'队列':

email              status

me@email.com       queued
someone@email.com  queued
another@email.com  sent

然后,只要您的队列处理器运行,insertEmail就会变为updateQueue($ email),您的查询是:

mysql_query('Update queue Set `status' = 'sent' Where email = '$email');

要检索尚未发送电子邮件的任何人:

mysql_query('Select email From queue Where `status' = 'queued');