簡體   English   中英

While循環僅顯示第一個結果

[英]While loop only displaying first result

因此,我讓此代碼在今天早些時候開始工作-突然,它決定只開始顯示查詢的第一個結果。 我無法弄清楚自那時以來發生了什么變化,我實際上認為我什么也沒有改變...無論如何...我進入數據庫並更改了表,以便所有“升級”都符合要求要顯示,但仍然只顯示一個結果。

        $sql = "SELECT id, name, cost, count(*) FROM upgrades 
            WHERE id NOT IN (Select upgrade_id  FROM thehave8_site1.user_upgrades WHERE uid = :uid)
            AND nullif NOT IN(SELECT upgrade_id FROM thehave8_site1.user_upgrades WHERE uid = :uid2)
            AND prereq IN (SELECT upgrade_id FROM thehave8_site1.user_upgrades WHERE uid = :uid3)
            ;";
    $que = $this->db->prepare($sql);
    #$que->bindParam(':id', $id); //note the : before id
    #$que->bindParam(':id2', $id);
    $que->bindParam(':uid', $this->uid);
    $que->bindParam(':uid2', $this->uid);
    $que->bindParam(':uid3', $this->uid);
    try { 
        $que->execute();
        while($row = $que->fetch(PDO::FETCH_BOTH))
        {

                echo "<div class='upgrade' id={$row[0]}><p>{$row[1]}</p><p>{$row[2]}</p></div>";

        }
    } catch(PDOException $e) { echo $e->getMessage();}

您是否錯過了一些將查詢結果前進到下一行的代碼行? 當我遍歷記錄集時(與您所做的工作稍有不同,但可能沒有太大不同),通常會出現一個MoveNext或類似的東西-我在這里看不到任何類似的東西。

我不知道您使用的是哪種語言。

......

我不允許在您的回復中添加評論,所以我將在此處添加評論。 您真的看起來好像知道自己在做什么,比我寫的任何東西都要先進! 這里也很新,也沒有趕上標簽系統,感謝您指出來,這樣我以后就不必為難了。 很高興您已經解決了。 我認為,如果您將Count(*)包含為子查詢,它將起作用

SELECT FIELD1,FIELD2,(SELECT count(*)FROM ...)AS FIELD3

從(ETC)

或者,如果您只想在記錄集結果中使用它的值,則可以通過查詢提前對其進行計算,然后在您的select語句中將其值作為虛擬/常量字段包含在內。 根據查詢引擎中的查詢計划,這可能會或可能不會更有效率。

或者只是等待從記錄集中獲取Recordcount。

問題已解決,盡管我不確定確切原因,但查詢字符串末尾的count(*)阻止了整個代碼正常運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM