我正在处理上面的代码:
<section id="home" style="display:normal;" data-state="active">
<!-- // tabella con tutte le annate disponibili su dB -->
<?php
$query = "SELECT year(dataGranpremio) as anno
FROM Granpremi
GROUP BY YEAR (dataGranpremio)";
$res = mysqli_query($db_connection, $query);
if (!$res) {
die ("Errore nella query " . mysqli_error($db_connection));
}
$numero = mysqli_num_rows($res);
<h2>HOME</h2>
<table width="950" border="1">
<?php $counter=0;
while ($counter<$numero) { // ciclo while
$countcolumns=0;?>
<tr>
<?php while ($ris=mysqli_fetch_array($res) && $countcolumns<$columns) {?>
<td>
<?php print( $ris);?>
</td>
<?php $counter++;
$countcolumns++;
}?>
</tr>
<?php }?> <!--// fine ciclo-->
</table> <!--//chiusura tabella-->
<?php }// fine if numero
else { ?><p>ERRORE accesso al DB</p><?php }
mysqli_close($db_connection);?>
</section>
此部分应显示Granpremi表中所有年份的列表: Granpremi {ID(INT),dataGranpremio(日期)}; 我尝试了查询,它工作,但当我运行此代码时,它显示正确的值数,但为空。 在它使用mysql之前,我试图转移到mysqli来解决这个问题,但没有任何改变。 有人可以帮我解决吗? 谢谢你们。
答案 0 :(得分:0)
我认为你过于复杂了
你的循环里面有一个循环。
B 30
循环遍历sql结果集(年份列表)中每条记录的内部循环将在外部循环循环一次之前完全执行。因此,您最终会得到一个表,其中包含与结果集一样多的记录,以及与结果集中的记录一样多的字段。
此外,你的内部循环条件(循环通过结果集中的记录的正确循环)会检查C 12
,但你从未设置D 18
,这样每次都会失败。你根本没有真正遍历你的记录集。因为你已经知道了你的列数,所以我无法弄清楚你为什么要进行这项检查。它是1.你的SQL只有一个字段。
最后,我相信D 22
是更好的选择。
您可以将其转换为单行,包含多个字段(水平布局):
Category Area
如果您想要一个垂直列表(多行和一列),而不是水平列表,您可以使用:
A 65
我们只是在记录集的循环内移动B 75
,这样就会为每条记录生成一个新的表格行。