2013-05-22 76 views
0

我在我的數據庫中有兩條記錄,我想將它們打印出來。 所以我wroted這樣的:MYSQL爲什麼While循環返回第一個記錄兩次?

<?php 
$resDB = mysql_connect("localhost", "root", ""); 
mysql_select_db("xe", $resDB); 


$aco = mysql_query("SELECT * FROM members WHERE member_id IN (SELECT member_id FROM  pfields_content WHERE TRIM(field_12) IS NOT NULL) "); 
while ($row = mysql_fetch_array($aco)) 
{ 

$query1 = mysql_query("SELECT member_id FROM pfields_content WHERE TRIM(field_12) IS NOT NULL LIMIT 1"); 
$memberID = mysql_fetch_row($query1); 

echo $memberID[0]; 
echo '<br>'; 




} 
?> 

而不是兩個記錄(會員ID):

它打印出第一條記錄(會員ID)兩次:

有人可以幫我嗎?

+4

你兩次運行完全相同的查詢和打印相同的值。 (除了使用結果數作爲循環和運行內部查詢的次數外,您從不會對外部查詢的結果做任何事情)。 – geoffspear

+0

循環內部的DB查詢通常是一個非常糟糕的性能方面的想法。熟悉JOIN並瞭解如何通過一個查詢獲取所需的所有數據。 (具體取決於您的數據模型。) – CBroe

回答

1

,因爲它是每個循環中執行一次兩個查詢不在其中相關的,因此您將有兩個結果,因爲第一個查詢發現兩場比賽排,所以循環兩次,而從第二個查詢你總是會得到相同的價值觀。我建議刪除第二個查詢和打印從第一查詢直接導致這樣你會打印兩個differetns id

$aco = mysql_query("SELECT * FROM members WHERE member_id IN (SELECT member_id FROM  pfields_content WHERE TRIM(field_12) IS NOT NULL) "); 
while ($row = mysql_fetch_array($aco)) 
{ 
    echo $row['member_id']; // or whatever your column name is 
} 

否則,你可以使用來自第一查詢選定成員ID和第二查詢與WHERE子句限制結果,以使用只有member_id = '$row['member_id']

然後我想記住你,mysql_功能已被棄用,所以我會建議你切換到mysqliPDO

+0

謝謝先生!現在我明白了:) – user2405957

+0

@ user2405957歡迎你!不要忘記接受答案,並將它提升爲幫助未來出現類似問題的人 – Fabio

相關問題