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你可以將你發送的文件保存到一個文件中,然後從中加載它。這種方式的性能不是問題,也取決於電子郵件的大小性能不應該是一個問題。 –