[英]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.