数据库行未在HTML表中完全显示

时间:2019-02-05 20:23:59

标签: php html mysql

我正在尝试通过php在HTML表中显示mySQL数据。第一行显示正确,但是其他行集并未在我的表中进行组织和显示,而只是在容器底部无结构地回显。

我认为由于正在显示数据(尽管不在表中),所以我的查询是正确的,只是不确定如何进行。

这是我的表结构问题吗?

我尝试添加第二个:

 echo '<td>' . $data['studentNumber'] . '</td><td>' . $data['handle'] . '</td><td>' . $data['email'] . '</td>'; 

在我的第一个回声之下,但它只是复制了所有内容。

这里是有问题的整个代码:Screenshot Here

<div class="container-fluid">
            <div class="row">
                <div class="col-md details">  
                    <p class="details_title"></p>                 
                    <?php
                    $getAllStudentsTable = "SELECT * FROM users WHERE accessLevel = 3";
                    $result = (mysqli_query($conn, $getAllStudentsTable));

                    echo '<table class="table">
                          <thead class="thead-dark">';  
                    echo' <tr>                        
                          <th scope="col">Student Number</th>
                          <th scope="col">Handle</th>
                          <th scope="col">Email Address</th>
                          </tr>
                          </thead>'; //table headers

                    while ($data = mysqli_fetch_array($result))  {                      
                        echo' <tbody> <tr>'; 
                        echo '<td>' . $data['studentNumber'] . '</td><td>' . $data['handle'] . '</td><td>' . $data['email'] . '</td>'; 
                        echo'</tr>  </tbody> </table>'; 
                    }
                    ?> 

有人可以为此指出正确的方向吗?

(我对PHP,SO还是比较陌生,这是有史以来第一次尝试将数据库数据显示到HTML表中的尝试。)

我已经附上了该问题的屏幕快照的链接(尚未发布图片,哈哈)。

谢谢!

1 个答案:

答案 0 :(得分:1)

您将在循环中回显大多数表结构,而您应该在其中回显行。作为必要的调试步骤,请在浏览器中查看“查看源代码”,并查看表结构是什么。您会发现多个<tbody>元素和多个结束</table>标签,使浏览器感到困惑。

基本上,从循环中删除各种<tbody><table>标签,然后在循环中回显它们。像这样:

echo '<tbody>'; 
while ($data = mysqli_fetch_array($result))  {                      
    echo '<tr>'; 
    echo '<td>' . $data['studentNumber'] . '</td><td>' . $data['handle'] . '</td><td>' . $data['email'] . '</td>';
    echo '</tr>'; 
}
echo '</tbody></table>';

您需要在循环中重复的是每个<tr>元素及其子元素。