2010-08-20 126 views
1

我在php文件中查詢時遇到問題。 我有一個查詢檢索電子郵件地址,它的工作原理是正確的,但是當它發送電子郵件時,地址會添加兩次。查詢結果的PHP問題

SELECT email FROM jos_users WHERE id=$i

$ i是一個數字,自動遞增。

我有一個for檢查每個用戶ID,看看是否應該發送一封電子郵件。

任何想法?

感謝, 塞巴斯蒂安

+2

你能後的代碼文件中...描述這是一個很多比顯示它不太有幫助... – ircmaxell 2010-08-20 14:08:49

+3

查詢不是問題。你如何迭代結果? – Fosco 2010-08-20 14:09:25

回答

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