我有两个 mysql 表 sent
和 queue
。我将成员插入到 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/