首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从SQL查询中获得多个结果

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

Stack Overflow用户
提问于 2012-09-27 13:27:13
回答 2查看 3K关注 0票数 2

我有这个函数:

代码语言:javascript
复制
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

代码语言:javascript
复制
 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个结果:

代码语言:javascript
复制
Array ( 
[id] => 3505 
[from_id] => 111 
[to_id] => 109 
[message] => how are you? 
[sent] => 1343109753 
[recd] => 1 
[system_message] => no 
)

但是应该有4条消息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-27 13:32:44

您必须为返回的每一行调用mysql_fetch_assoc()。如果你只调用mysql_fetch_assoc()一次,那么它只会返回第一行。

尝试如下所示:

代码语言:javascript
复制
$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);
}
票数 4
EN

Stack Overflow用户

发布于 2012-09-27 13:37:24

“mysql_fetch_assoc”返回与读取的行相对应的关联数组,并将内部数据指针向前移动。

你需要像这样迭代数组:

代码语言:javascript
复制
        while ($row = mysql_fetch_assoc($q)) {      
           echo $row["message"]; 

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12614637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档