查询结果的PHP问题

时间:2010-08-20 14:07:27

标签: php mysql

我在php文件中遇到问题。 我有一个检索电子邮件地址的查询,它的工作正常,但是当它发送电子邮件时,地址会被添加两次。

SELECT email FROM jos_users WHERE id=$i

$ i是一个自动递增的数字。

我有一个for来检查每个用户ID,看看是否应该发送电子邮件。

有什么想法吗?

感谢, 塞巴斯蒂安

1 个答案:

答案 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);