繁体   English   中英

while循环内的查询仅显示1个结果

[英]query inside while loop only shows 1 result

我在php中做一个while循环,一切顺利,但是问题是我不仅要获取用户的ID,还要获取另一个表中的其他东西,所以当我继续进行时,在while循环内查询并从第二个表中选择所有内容(其中id等于第一个查询的结果的id),它仅返回1个结果...

这是我目前拥有的代码:

public function getFriends($id)
{
global $params;

$get = $this->db->select("{$this->DB['data']['friends']['tbl']}", "*",
                          array(
                                "{$this->DB['data']['friends']['one']}" => $id
                          )
                        );

if($get)
{
    while($key = $get->fetch())
    {
        $query = $this->db->query("SELECT * FROM {$this->DB['data']['users']['tbl']}
                                   WHERE {$this->DB['data']['users']['id']} = :id",
                                   array(
                                         "id" => $key->{$this->DB['data']['friends']['two']}
                                   )
                                 );

        while($row = $query->fetch())
        {
            $params["user_friends"][] = [
                "id"   => $key->{$this->DB['data']['friends']['two']},
                "name" => $row->{$this->DB['data']['users']['username']},
                "look" => $row->{$this->DB['data']['users']['figure']}
            ];
        }
    }
}
else
{
    $params["update_error"] = $params["lang_no_friends"];
}
}

提前致谢! 请帮帮我!

诊断PHP和Mysql问题的第一步是在代码中添加几行,以告诉您每行的功能(每次进入循环时进行声明;在运行每个mysql查询时,吐出查询字符串),以便缩小范围问题出在哪里。 通常,这使您回想起来很愚蠢:“ Du,此查询未返回任何内容,因为我将记录ID的格式设置错误”等等。

您上面提供的代码段对我没有太大帮助。 我是一个疑难解答者(不是解析器),所以我需要诊断数据(不是直接代码)才能提供更多帮助。

在没有答案的情况下,我不知道您在幕后使用的是什么数据库框架... PDO,mysqli_ 或(希望不是)mysql_ 但是,无论如何,问题可能是您的第二个查询停止了第一个查询的继续。 我会使用PDO-> fetchAll()来全部获取它们...但是您说您无法做到...所以,循环执行第一个并将这些结果加载到数组中是我要做的第一件事这就是问题:

public function getFriends($id)
{
    global $params;

    $get = $this->db->select("{$this->DB['data']['friends']['tbl']}", "*",
                              array(
                                    "{$this->DB['data']['friends']['one']}" => $id
                              )
                            );

    $firstResults = array();
    if( $get ) {
        while( $key = $get->fetch() ) {
            $firstResults[] = $key;
        }
    }
    else
    {
        $params["update_error"] = $params["lang_no_friends"];
    }

    foreach( $firstResults AS $key )
    {
        $query = $this->db->query("SELECT * FROM {$this->DB['data']['users']['tbl']}
                                   WHERE {$this->DB['data']['users']['id']} = :id",
                                   array(
                                         "id" => $key->{$this->DB['data']['friends']['two']}
                                   )
                                 );

        while($row = $query->fetch())
        {
            $params["user_friends"][] = [
                "id"   => $key->{$this->DB['data']['friends']['two']},
                "name" => $row->{$this->DB['data']['users']['username']},
                "look" => $row->{$this->DB['data']['users']['figure']}
            ];
        }
    }
}

如果这不起作用,那么我们需要更多数据...例如,生成的查询是什么? 当您手动运行它时,它是否会返回多个结果? 如果您摆脱了内部查询,是否可以解决问题? 等等

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM