繁体   English   中英

PHP-如何打印我的数据库表?

[英]PHP - How can I print out my database table?

我有一个php代码来打印出我的表,包括其列名。 打印必须是动态的,因为它必须根据用户输入来打印不同的尺寸/长度表。

<table>
    <?php
    while ($row = mysqli_fetch_array($results)) {
        while ($fieldInfo = mysqli_fetch_field($results)) { ?>
            <th> <?php echo $fieldInfo->name; ?> </th>
            <td> <?php echo $row[$fieldInfo->name] ?> </td>
        <?php } 
    } ?>
</table>

这是对$results的查询:

$tName = $_POST["tableNames"];   //this data is recieved from another page
require_once("conn.php");
$sql = "SELECT * FROM $tName";
$results = mysqli_query($conn, $sql)
or die ('Problem with query' . mysqli_error($conn));

我的代码正确地打印出了表名以及第一行数据,但格式不正确,这是它的外观: 另外。 由于某种原因,即使im使用while循环,它也只打印出第一行。

采用

mysqli_fetch_field()函数将结果集中的下一个列作为对象返回。 它只会返回所有列名,而不返回表的记录。

您需要使用mysqli_fetch_array()来获取所有记录:

while ($info = mysqli_fetch_array($results,MYSQLI_ASSOC)) {
  {
  echo $info['rid'];
  echo $info['level'];
  ....
  }

我对您的建议是准备两个数组:第一个:包含列名,第二个:包含数据。

当使用两个foreach生成带有标题的第一行和第二个显示数据时。 您忘记添加<tr>标记来划分行。

我最终使用了taras建议将列名存储在数组中:

<table>
    <?php
    while ($fieldInfo = mysqli_fetch_field($results)) { ?>
        <th> <?php echo $fieldInfo->name; ?> </th>
        <?php 
        $colNames[] = $fieldInfo->name;
        ?>
    <?php } 

    while ($row = mysqli_fetch_array($results)) { ?>
        <tr>
        <?php for ($i=0; $i<sizeof($colNames); $i++) { ?>
            <td><?php echo $row[$colNames[$i]] ?>
        <?php } ?>
        </tr>
    <?php } ?>
</table>

据我了解,您是否要显示所有表及其列? 所以你可以像下面这样格式化

$sql = "SHOW TABLES FROM dbname";
$result_tables = mysqli_query($link, $sql);
echo "<table border=1>";
echo "<tr><td>Table name</td><td>Fields name</td></tr>";
while($row = mysqli_fetch_array($result_tables)) {
    echo "<tr>";
    echo "<td>".$row[0]."</td>";

    $sql2 = "SHOW COLUMNS FROM ".$row[0];\\row[0] is used to get table name
    $result_fields = mysqli_query($link, $sql2);
    echo "<td>";
    while($row2 = mysqli_fetch_array($result_fields)) {
        echo $row2['Field'].',';
    }
    echo "</td>";
    echo "</tr>";

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM