簡體   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