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

标签 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'

最佳答案

也许您没有能力改变您的表格,但如果您这样做,您是否考虑过在队列表中创建一个状态列并完全删除已发送的表格?

最简单的版本是:

表“队列”:

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

关于php - 如果已发送表中不存在,则插入电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5723190/

相关文章:

php - 如何使用 PHP 和 MySQL 计算子类别级别

php - 使用 $.post() 进行表单验证

php - 是否可以将 Heroku Foreman 与 PHP 一起使用?

phpMailer 没有到达 Hotmail?

php - 用于数据库插入的最安全的现代过滤器?

mysql - 社交网络背后的数据库结构[指导]

python - Python 3.6 中无法通过 SQLAlchemy 连接到 mySQL

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure Software caused connection abort: recv failed

mysql - 即使在 max_allowed_pa​​cket 中设置了 +500mb 之后......它仍然给我一个错误

mysql - YII 找不到表