2012-09-27 74 views
1

多個結果,我有這樣的功能:如何從SQL查詢

function findAllmessageSender(){ 
$all_from = mysql_query("SELECT DISTINCT `from_id` FROM chat"); 
$names = array(); 
while ($row = mysql_fetch_array($all_from)) { 
$names[] = $row[0]; 
} 
return($names); 
} 

返回我的用戶的所有ID在一個私人的郵件系統。然後,我想要得到的一切,其中user_id是等於登錄並from_id用戶信息等於所有from_id我從以前的功能有:

function fetchAllMessages($user_id){ 
$from_id = array(); 
$from_id = findAllmessageSender(); 
$data = '\'' . implode('\', \'', $from_id) . '\''; 
//if I echo out $ data I get these numbers '113', '141', '109', '111' and that's what I want 
$q=array(); 
$q = mysql_query("SELECT * FROM chat WHERE `to_id` = '$user_id' AND `from_id` IN($data)") or die(mysql_error()); 
$try = mysql_fetch_assoc($q); 
print_r($try); 
} 

print_r的回報只有1個結果:

Array ( 
[id] => 3505 
[from_id] => 111 
[to_id] => 109 
[message] => how are you? 
[sent] => 1343109753 
[recd] => 1 
[system_message] => no 
) 

但應該有4條消息。

回答

3

您必須爲每個返回的行調用mysql_fetch_assoc()。如果您只撥打mysql_fetch_assoc()一次,那麼它只會返回第一行。

嘗試是這樣的:

$result = mysql_query("SELECT * FROM chat WHERE `to_id` = '$user_id' AND `from_id` IN($data)") or die(mysql_error()); 
while ($row = mysql_fetch_assoc($result)) { 
    print_r($row); 
} 
+0

謝謝,我不爲什麼之前我沒有做...真的很感激! – mat

0

「mysql_fetch_assoc」返回對應於所提取的行和移動內部數據指針超前關聯數組。

您需要遍歷數組,如:

 while ($row = mysql_fetch_assoc($q)) {  
      echo $row["message"]; 

}