为什么在转储mysql表时只正确显示一行?

qv7cva1a  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(590)

我试图通过php将mysql表转储到html页面上,但遇到了一些问题。
目前我有(使用bootstrap 4):

require('db.php');
$sql = "SELECT * FROM `users`;";
$table = "";
$result = mysqli_query($connection, $sql) or die(mysql_error());

$table = "<table class='table table-hover table-dark'>";
$table .= "<thread>";
$table .= "<tr>";
$fieldsInfo = $result->fetch_fields();

foreach($fieldsInfo as $fieldinfo)
    $table .= "<th scope='col'>{$fieldinfo->name}</th>";
$table .= "</tr>";
$table .= "</thead>";
$table .= "<tbody>";

while ($row = $result->fetch_assoc()) {
    $table .= "<tr>";

    foreach ($row as $columnValue) {
        $table .= "<td>$columnValue</td>";

    }
    $table .= "</tr>";
    $table .= "</tbody>";
    $table .= "</table>";
}
echo $table;
?>

我的结果是这样的:表显示
我想这就是我要放的地方 <tr> 以及 </tr> 值,但我尝试将它们放在循环的内部和外部。当放置在循环中时,我的表将所有列值返回到第一个表标题中。我通过firefox‘inspect element’进一步检查了代码,发现表中的第二行实际上超出了 <table> 这对我来说毫无意义,因为我的循环显然是在我使用 </table> .
希望有人能给我一些启示,我刚刚开始使用php,所以我对它不是很在行;但我想学习。

iibxawm4

iibxawm41#

你的 <tr> 以及 </tr> 标签放在那里看起来不错。问题是收尾 </tbody> 以及 </table> 标记位于while循环中。把它们移下来,它就应该出来了。

while ($row = $result->fetch_assoc()) {
    $table .= "<tr>";

    foreach ($row as $columnValue) {
        $table .= "<td>$columnValue</td>";

    }
    $table .= "</tr>";
}
$table .= "</tbody>";
$table .= "</table>";
echo $table;
vd2z7a6w

vd2z7a6w2#

使用此代码:

while ($row = $result->fetch_assoc()) {
    $table .= "<tr>";
    foreach ($row as $columnValue) {
        $table .= "<td>$columnValue</td>";
    }
    $table .= "</tr>";

}
$table .= "</tbody>";
$table .= "</table>";

相关问题