我在php文件中遇到问题。 我有一个检索电子邮件地址的查询,它的工作正常,但是当它发送电子邮件时,地址会被添加两次。
SELECT email FROM jos_users WHERE id=$i
$ i是一个自动递增的数字。
我有一个for
来检查每个用户ID,看看是否应该发送电子邮件。
有什么想法吗?
感谢, 塞巴斯蒂安
答案 0 :(得分:2)
如果您的ID列表不是太长,您可以使用以下内容:
SELECT DISTINCT email FROM jos_users WHERE id IN (5, 18, 24, ...);
如果您的数据包太长错误,您可以increase the packet size,使用temporary table或跟踪PHP应用程序中的电子邮件。以下是使用临时表的示例:
CREATE TEMPORARY TABLE tmp (id INT);
/* insert first 50 values (or 100, or 1000, whichever fits into your packet size)*/
INSERT INTO tmp (id) VALUES (5), (18), (24) ...;
/* insert next 50 values */
INSERT INTO tmp (id) VALUES (105), (118), (124) ...;
/* more inserts until you have a temporary table containing all ids */
INSERT INTO tmp ...
INSERT INTO tmp ...
/* select */
SELECT DISTINCT email FROM jos_users INNER JOIN tmp USING (id);