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


Insert email if it doesn't exist in the sent table

我有两个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'

也许您没有能力更改表,但是如果您有,您是否考虑过在队列表上创建状态列并完全删除发送的表?

最简单的版本是:

表"队列":

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');