2013-06-26 69 views
0

我想所有的結果,因爲我去通過循環MySQL的聯合和秩序不工作

$result = ....; 
$finalresult = 0; 

while($row = mysql_fetch_assoc($result)) 
{ 
    $clubID = $row['clubID']; 
    $finalresult = mysql_query('"'.$finalresult.'" UNION ALL SELECT * FROM events WHERE clubID = "'.$clubID.'"'); 
} 

然而相結合,這是行不通的。有沒有另一種方法來做到這一點?

+1

你最好將每個查詢寫入數組,然後使用'implode()'將它們合併到一起。或者,你也可以使用'WHERE clubID IN()'子句來做一個單一的查詢? – andrewsi

+0

是包含查詢字符串的最終結果嗎? –

+0

@RajeevRanjan沒有最終結果包含選擇的結果,我剛剛初始化它的值0 – nshah

回答

2

這應該做的伎倆:

$clubIDs = array(); 

while($row = mysql_fetch_assoc($result)) { 
    $clubIDs[] = $row['clubID']; 
} 

$finalresult = mysql_query("SELECT * FROM events WHERE clubID IN (" . implode(',', $clubIDs) . ")"); 

它產生clubIDs列表從以前的查詢,並把它們放入數組。然後,它使用該數組生成IN子句,並一次檢索所有數據。

一些注意事項 - 如果沒有有效的俱樂部ID,這將失敗,所以你會想添加一些錯誤檢查。

其次,mysql_ *在PHP 5.5中已棄用,所以您應該考慮使用mysqli_ *或PDO - 它們都更安全。

+0

讓我試試看:D – nshah

+0

非常感謝你! – nshah