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

时间:2018-05-14 22:43:35

标签: php mysql html-table

我试图通过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;
?>

我的结果如下: Table Display

我相信我将<tr></tr>值放在我的代码中,但我已尝试将它们放在我的内外两侧循环。当放在我的循环内部时,我的表将所有列值返回到第一个表标题中。我通过Firefox进一步检查了我的代码&#39;检查元素&#39;我看到表中的第二行实际上超出了<table>的范围,这对我来说没有意义,因为我的循环显然是在我使用</table>之前。

希望有人可以为我阐明这一点,我刚刚开始使用PHP,所以我对它并不满意;但我想学习。

2 个答案:

答案 0 :(得分:2)

您的<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;

答案 1 :(得分:0)

使用此代码:

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

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