1
我有一个问题,添加数据在MySQL表中。我创建了一个简单的通讯系统。系统添加发送电子邮件地址到任务表和它的检查之前,如果它已发送发送。但是每次添加重复的记录都是例如;我的电子邮件列表包含3000条记录,但表中显示了6000条记录Mysql添加重复的数据,尽管控制
这是我的表结构和查询;
订户表
ID subscriber_mail
--------------------
1 [email protected]
2 [email protected]
3 [email protected]
4 [email protected]
任务表
ID subscriber_mail CID
---------------------------
1 [email protected] 1
2 [email protected] 1
3 [email protected] 1
4 [email protected] 1
订户获取和记录
$query = "
SELECT
S.*
FROM
subscribers AS S
LEFT JOIN tasks AS T ON (T.CID=". CAMPAIGN_ID ." AND S.subscriber_mail=T.subscriber_mail)
LEFT JOIN unsubscribes AS U ON (U.CID=". CAMPAIGN_ID ." AND S.subscriber_mail=U.subscriber_mail)
WHERE
(T.subscriber_mail IS NULL)
AND (U.subscriber_mail IS NULL)
";
$opSubs = $myconn->query($query) or die(mysqli_error($myconn));
while($opSubsRs = $opSubs->fetch_assoc()){
-- SMTP connection --
if($mail->Send()){
$myconn->query("INSERT INTO tasks SET
CID=1,
subscriber_mail='". $opSubsRs['subscriber_mail'] ."'
");
}
}
因此,这个系统对我的本地主机和Namecheap,Godaddy没有重复记录工作正常,但一些托管服务在任务表中添加相同的记录。它可能是sql_mode
或NULL
,BINARY
的问题?使用MyISAM的数据库引擎。
问候。
是的,但用户提取查询选择只有未发送的邮件加入为(T.subscriber_mail IS NULL)如果我检查此循环中的任务列表可能会降低系统性能?如果我尝试在每个循环中检查具有1m记录的任务表? –
@GökhanAYVAZ你可以将你发送的文件保存到一个文件中,然后从中加载它。这种方式的性能不是问题,也取决于电子邮件的大小性能不应该是一个问题。 –