我正在尝试打印此查询的结果,但它仅打印出第一行。为什么会这样?
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À</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>";
}
}
答案 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。在较早的版本中可能会出现这种情况,但可能无法为您带来预期的结果。
...这主要在每个分组的未聚合列中未在GROUP BY中命名的所有值相同时主要有用。服务器可以从每个组中自由选择任何值,因此,除非它们相同,否则选择的值是不确定的。