为了账号安全,请及时绑定邮箱和手机立即绑定

sql限制无法显示第一行

sql限制无法显示第一行

PHP
翻过高山走不出你 2022-12-03 18:21:30
我有一个 SQL 查询,它看起来像:    `SELECT * FROM table LIMIT 5;`事实上,我使用 mysql 的免费员工数据库,查询是:    `SELECT * FROM employees LIMIT 5;`现在我有一个 PHP 函数,它将选定的数据输出到一个 HTML 表中,如下所示:function outputTable($query, $link){     //Verbindung zur Datenbank inkludieren    require_once('./config.php');    //auffangen der Rückgabe    $erg = mysqli_query($link, $query);    //bestimmt Anzahl der Spalten (aocol = Amount Of COLumns)    //counts the amount of columns    $aocol = count(mysqli_fetch_array($erg, MYSQLI_NUM));    //table head    $head = "";    for($x = 0; $x < $aocol; $x++) {        //legt alle Informationen des Feldes $x in $finfo, darunter auch den Namen der Spalte.        //puts all information of the field $x in $finfo, also the name of the column        $finfo = mysqli_fetch_field_direct($erg, $x);        //Schreibt die Kopfzeile der Tabelle        //writes the table's head        $head .= "<th>".$finfo->name."</th>";    }    //only if style.css included-->irrelevant    echo '<div class="table"><table id="table">';    //output of table's head    echo "<th>$head</th>";    //output of table's body --> here must be the bug, I think    while($zeile = mysqli_fetch_array($erg, MYSQLI_NUM)) {        //new tablerow        echo "<tr>";        //filling the row        foreach($zeile as $feld) {            //format for numbers            $ra = preg_match('/^\d+$/',$feld) ? ' align="right"' : '';            //displaying table data            echo "<td$ra>".$feld."</td>";        }    }    //closing table and layout    echo '</table></div>';}
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

你打电话时...


$aocol = count(mysqli_fetch_array($erg, MYSQLI_NUM));

这实际上是在读取第一行,因此它不再可用于以下循环。


我建议重组您的代码,以便在主读取循环内构建头部,但只有当$head它为空时......


//table head

$head = "";


//only if style.css included-->irrelevant

echo '<div class="table"><table id="table">';

//output of table's body --> here must be the bug, I think

while($zeile = mysqli_fetch_array($erg, MYSQLI_NUM)) {

    if ( empty ($head) )    {

        //counts the amount of columns

        $aocol = count($zeile);

        for($x = 0; $x < $aocol; $x++) {

            //legt alle Informationen des Feldes $x in $finfo, darunter auch den Namen der Spalte.

            //puts all information of the field $x in $finfo, also the name of the column

            $finfo = mysqli_fetch_field_direct($erg, $x);

            //Schreibt die Kopfzeile der Tabelle

            //writes the table's head

            $head .= "<th>".$finfo->name."</th>";

        }

        //output of table's head

        echo "<th>$head</th>";

    }

    //new tablerow

    echo "<tr>";

    //filling the row

    foreach($zeile as $feld) {

        //format for numbers

        $ra = preg_match('/^\d+$/',$feld) ? ' align="right"' : '';

        //displaying table data

        echo "<td$ra>".$feld."</td>";

    }

}

此外,如果您更改MYSQLI_NUM为MYSQLI_ASSOC,那么您可以只使用键名作为列名并删除额外的 API 调用......


while($zeile = mysqli_fetch_array($erg, MYSQLI_ASSOC)) {

    if ( empty ($head) )    {

        foreach ( $zeile as $name => $value )   {

            $head .= "<th>".$name."</th>";

        }

        //output of table's head

        echo "<th>$head</th>";

    }


查看完整回答
反对 回复 2022-12-03
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您应该使用这样的查询来获取所有结果:

$query = "SELECT * FROM table ORDER BY  `id` LIMIT 0, 5";

这只会给你前 5 个结果,然后你可以:

$query = "SELECT * FROM table ORDER BY  `id` LIMIT 5, 100";

或这个:

$query = "SELECT * FROM table ORDER BY `id` DESC LIMIT 5";


查看完整回答
反对 回复 2022-12-03
  • 2 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信