簡體   English   中英

從兩個查詢中獲取數據的兩個while循環僅顯示一個結果

[英]two while loop fetching data from two queries only show one result

我有以下代碼可用於從數據庫中獲取數據:

function show_volanti($data){

    $con = $data;       // PASSO CONNESSIONE
    $id = 1;            // 1 VOLANTE
    $visibile = 1;      // VARIABILE DI VISIBILITA'

    $rows1 = array();   // PREPARO ARRAY 1 PER ID ARTICOLI VOLANTE
    $rows2 = array();   // PREPARO ARRAY 2 PER LE FOTO VOLANTI

    $id_articoli = '';  // RIFERIMENTO ARTICOLI PER SECONDA QUERY GALLERIA
    $g = '';            // RIFERIMENTO ASSOCIAZIONE GALLERY VIEWER
    //$rif_id = '';     // RIF_ID SE OK DA CANCELLARE


    $query1 = "SELECT articoli.id AS id_articoli,
                                      articoli.titolo,
                                      articoli.descrizione
                                      FROM articoli
                                      WHERE articoli.genere1 = ?
                                      AND articoli.visibile = ?";

    $query2 = "SELECT galleria.id AS id_galleria,
                                    galleria.foto,
                                    galleria.rif_id
                                    FROM galleria
                                    WHERE galleria.rif_id = ?";

    $stmt = mysqli_stmt_init($con);     // INIZIALIZZO LA CONNESSIONE

    mysqli_stmt_prepare($stmt,$query1);

    mysqli_stmt_bind_param($stmt,'ii',$id,$visibile);   // LEGO I PARAMETRI

    mysqli_stmt_execute($stmt);     // ESEGUO LA QUERY

    mysqli_stmt_bind_result($stmt,
                            $rows1['id_articoli'],
                            $rows1['titolo'],
                            $rows1['descrizione']);     // CREO RIFERIMENTO PER GALLERIA NEL VIEWER

    $html = "";
    $html .= "<div class='container'>";

    while (mysqli_stmt_fetch($stmt)){

        $id_articoli = $rows1['id_articoli'];


        $html .= "  <div class='row'>";
        $html .= "    <div class='col-sm-12'>";
        $html .= "      <div class='panel panel-default'>";
        $html .= "        <div class='panel-body'>";


        $html .= "            <div class='col'>";
        $html .= "              <div class='panel panel-default'>";
        $html .= "                <div class='panel-heading'><b>$rows1[titolo]</b></div>";
        $html .= "                  <div class='panel-body'>";
        $html .= "                      <div class='row'>";
        $html .= "                          <div class='class_p'>$rows1[descrizione]</div>";
        $html .= "                      <div> <!-- end first row -->";

        $html .= "                      <div class='class_container clearfix'>";


        mysqli_stmt_prepare($stmt,$query2);

        mysqli_stmt_bind_param($stmt,'i',$id_articoli);     // LEGO I PARAMETRI

        mysqli_stmt_execute($stmt);     // ESEGUO LA QUERY

        mysqli_stmt_bind_result($stmt,
                                $rows2['id_galleria'],
                                $rows2['foto'],
                                $rows2['rif_id']);                                  

        while(mysqli_stmt_fetch($stmt)){

            $g = '';
            $g .= "g";
            $g .= $rows2['rif_id'];

            $html .= "<div class='thumbnail col-sm-2'>";
            $html .= "<div class='class_img'>";
            $html .= "<a href='$rows2[foto]' data-toggle='lightbox' data-gallery='$g' >";
            $html .= "<img src='$rows2[foto]' class='img-fluid'>";
            $html .= "</a>";
            $html .= "</div> <!-- end class_img -->";
            $html .= "</div> <!-- end thumbnail col-sm-2- -->"; 
        }

        $html .= "</div> <!-- end class_container -->";

        $html .= "</div> <!-- end panel body -->";
        $html .= "</div> <!-- end panel panel-default -->";
        $html .= "</div> <!-- end col -->";
        $html .= "</div> <!-- end panel-body -->";
        $html .= "</div> <!-- end panel panel-default -->";
        $html .= "</div> <!-- end col-sm-12 -->";
        $html .= "</div> <!-- end row -->";
    }

    mysqli_stmt_close($stmt);   // CHIUDO LO STATEMENT
    mysqli_close($con);         // CHIUDO CONNESSIONE   
    return $html;
}

該代碼部分起作用,因為它顯示了結果,但只顯示了一個結果,並且在數據庫內部,我還有更多結果要顯示,因此它無法正常運行。.您能幫我找到錯誤嗎?

看來您正在對內部和外部循環使用相同的變量。 例如,您對兩個都使用$ stmt。 我不確定這是否就是為什么您只能得到一個結果(因為這可能取決於您從每個結果中獲得的結果量),但是我會對此進行調查。

作為調試技巧,我將刪除與外部循環相關的所有代碼,然后首先正確打印出外部代碼的結果。 一旦工作完成,就開始添加內部循環代碼並確保其有效。 但是不要重復使用相同的變量。

暫無
暫無

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

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