如何从SQL查询中获取多个结果

时间:2012-09-27 05:27:13

标签: php 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条消息。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

'mysql_fetch_assoc'返回一个与获取的行对应的关联数组,并向前移动内部数据指针。

您需要迭代数组:

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

}