为什么只显示此查询的一行?

时间:2019-06-10 16:48:38

标签: php html sql printing

我正在尝试打印此查询的结果,但它仅打印出第一行。为什么会这样?

if (isset($_GET['consumiperstanza'])) {
    $num_stanza=$_GET['num_stanza'];
    $data1=$_GET['data1'];
    $data2=$_GET['data2'];
    $query="SELECT stanze.num_stanza,consumi.cod_consumo, servizi.nome, 
                   consumi.quantita, servizi.prezzo, consumi.data_c
            FROM consumi, servizi, stanze
            WHERE stanze.num_stanza=consumi.num_stanza
                  AND servizi.cod_servizio=consumi.cod_servizio
                  AND stanze.num_stanza='$num_stanza'
                  AND consumi.data_c BETWEEN '$data1' AND '$data2'
            GROUP BY stanze.num_stanza";
    $risultato = $conn->query($query);
    if(mysqli_num_rows($risultato) > 0){
        echo "<table border=1 bgcolor= 'white' align='center'>";
            echo "<tr>";
                echo "<th>NUMERO STANZA</th>";
                echo "<th>CODICE CONSUMO</th>";
                echo "<th>NOME</th>";
                echo "<th>QUANTIT&Agrave;</th>";
                echo "<th>PREZZO</th>";
                echo "<th>DATA</th>";
            echo "</tr>";
        while($riga = mysqli_fetch_array($risultato)){
            echo "<tr>";
                echo "<td>" . $riga[0] . "</td>";
                echo "<td>" . $riga[1] . "</td>";
                echo "<td>" . $riga[2] . "</td>";
                echo "<td>" . $riga[3] . "</td>";
                echo "<td>" . $riga[4] . "</td>";
                echo "<td>" . $riga[5] . "</td>";
            echo "</tr>";
        }
        echo "</table><br>";
    }
}

1 个答案:

答案 0 :(得分:2)

这是您的条件之一

AND stanze.num_stanza='$num_stanza'

但是您也正在这样做。

GROUP BY stanze.num_stanza

所以,你只会得到一组。


此外,SELECT中的所有其他列均未明确定义,因为它们未包含在GROUP BY中,也不是聚合表达式。 Newer versions of MySQL actually will not allow you to do this by default。在较早的版本中可能会出现这种情况,但可能无法为您带来预期的结果。

The MySQL 5.6 manual:

  

...这主要在每个分组的未聚合列中未在GROUP BY中命名的所有值相同时主要有用。服务器可以从每个组中自由选择任何值,因此,除非它们相同,否则选择的值是不确定的。