mysqli查询结果正确的元素数但空值

时间:2016-05-12 15:00:12

标签: php mysql mysqli

我正在处理上面的代码:

<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来解决这个问题,但没有任何改变。 有人可以帮我解决吗? 谢谢你们。

1 个答案:

答案 0 :(得分:0)

我认为你过于复杂了

你的循环里面有一个循环。

B         30

循环遍历sql结果集(年份列表)中每条记录的内部循环将在外部循环循环一次之前完全执行。因此,您最终会得到一个表,其中包含与结果集一样多的记录,以及与结果集中的记录一样多的字段。

此外,你的内部循环条件(循环通过结果集中的记录的正确循环)会检查C 12,但你从未设置D 18,这样每次都会失败。你根本没有真正遍历你的记录集。因为你已经知道了你的列数,所以我无法弄清楚你为什么要进行这项检查。它是1.你的SQL只有一个字段。

最后,我相信D 22是更好的选择。

您可以将其转换为单行,包含多个字段(水平布局):

Category  Area

如果您想要一个垂直列表(多行和一列),而不是水平列表,您可以使用:

A         65

我们只是在记录集的循环内移动B 75,这样就会为每条记录生成一个新的表格行。