首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在交友系统上工作,需要有一种方法来添加朋友的id到哪里查询?同样的专栏?

在交友系统上工作,需要有一种方法来添加朋友的id到哪里查询?同样的专栏?
EN

Stack Overflow用户
提问于 2012-10-19 18:09:58
回答 1查看 75关注 0票数 0

好吧,这可能是显而易见的,但我正在创建一个好友系统,但我需要为表activity中的userid列提供多个可能的userid,但当我使用以下代码时:

代码语言:javascript
运行
复制
$q = $pdo->prepare("SELECT * FROM friends WHERE userid=:uid");
        $q->execute(array(
            ":uid"=>$user['id'],
        ));
        if($q->rowCount()>0){
            $remainder ="";
            foreach($q as $p){
                $remainder .= "OR `userid` =`".$p['friendid']."`";
            }
        }
        $query = $pdo -> prepare("SELECT * FROM `activity` WHERE `userid`=:id .$remainder. ORDER BY id DESC LIMIT 50");
        $query->execute(array(
            ":id"=>$user['id']
        ));

实际上,当我对结果执行var_dump操作时,它什么也不返回。而它应该具有用户及其所有朋友的流内容。

我在这里做错了什么?我好像找不到问题所在?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 18:14:59

您可以使用join,而不是使用两个单独的查询:

代码语言:javascript
运行
复制
select * from `activity` as `t`
join `friends` as `r` on (`t`.user_id = `r`.user_id)
where  `t`.user_id = :id

代码中的实际问题是:

代码语言:javascript
运行
复制
$remainder .= "OR `userid` =`".$p['friendid']."`";
                            ^                  ^

去掉它们。

此外,使用IN比在sql query中重复相同的代码更容易:

代码语言:javascript
运行
复制
$remainder = 'AND user_id in (';
$user_ids= array();

foreach($q as $p){
     $user_ids[] =$p['friendid'];
}

$remainder .= implode(',', $user_ids).')';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12971993

复制
相关文章

相似问题

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