簡體   English   中英

如何從SQL查詢中獲取多個結果

[英]How to get multiple results from SQL query

我有這個功能:

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條消息。

您必須為返回的每一行調用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);
}

“ mysql_fetch_assoc”返回一個與所獲取的行相對應的關聯數組,並將內部數據指針向前移動。

您需要像這樣迭代數組:

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM