Php 如何在查询中检索多个结果(ID)

Php 如何在查询中检索多个结果(ID),php,sql,oop,Php,Sql,Oop,我想检索多个结果,但当前仅获取一个结果,以下是我当前的代码: $p_user = $prodata->user_id; $usx = $user->getdb()->query("SELECT `user_one`, `user_two` FROM `friends` WHERE `user_one`= ? OR `user_two`= ? ", array($p_user, $p_user)); $count_frnds = $usx->count(); if(!$u

我想检索多个结果,但当前仅获取一个结果,以下是我当前的代码:

$p_user = $prodata->user_id;
$usx = $user->getdb()->query("SELECT `user_one`, `user_two` FROM `friends` WHERE `user_one`= ? OR `user_two`= ? ", array($p_user, $p_user));

$count_frnds = $usx->count();
if(!$usx->count()){
    echo 'error';
}else {
    foreach($usx->results() as $use){
        $use->user_one;
        $use->user_two;
        if($p_user == $use->user_one){
            $can = $use->user_two;
        }else {
            $can = $use->user_one;
        }

     }
}

echo $can; //want multiple results, but only returns one result.

发条缪斯已经指出了这一点。在foreach循环中,您正在用一个新值覆盖$can,这就是为什么您只能得到循环中的最后一个结果。首先尝试将$can定义为数组

$can = array();

...

foreach($usx->results() as $use){
    if($p_user == $use->user_one){
        $can[] = $use->user_two;
    }else {
        $can[] = $use->user_one;
    }
}

...

var_dump( $can );

// or

echo implode(",", $can);

发条缪斯已经指出了这一点。在foreach循环中,您正在用一个新值覆盖$can,这就是为什么您只能得到循环中的最后一个结果。首先尝试将$can定义为数组

$can = array();

...

foreach($usx->results() as $use){
    if($p_user == $use->user_one){
        $can[] = $use->user_two;
    }else {
        $can[] = $use->user_one;
    }
}

...

var_dump( $can );

// or

echo implode(",", $can);

.... 你不是在覆盖$can吗?此外,除非您有一些关于id的规则(例如,“user_one总是‘lower’id”),否则您可能必须检查两列中的两个输入id。。。。。你不是在覆盖$can吗?此外,除非您有一些关于id的规则(例如,“user_one总是‘lower’id”),否则您可能必须检查两列中的两个输入id。