我有一个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循环。
发布于 2016-05-30 11:13:44
我对您的建议是准备两个数组:第一个数组:包含列名,第二个数组包含数据。
当使用两个foreach生成带有头的第一行和显示数据的第二行时。您忘了添加<tr>标记来划分行。
发布于 2016-05-30 11:10:11
使用
mysqli_fetch_field()函数作为对象返回结果集中的下一列。它将只返回所有列名,而不是表的记录。
您需要使用mysqli_fetch_array()获取所有记录:
while ($info = mysqli_fetch_array($results,MYSQLI_ASSOC)) {
{
echo $info['rid'];
echo $info['level'];
....
}发布于 2016-05-30 11:52:09
最后,我使用了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>https://stackoverflow.com/questions/37524064
复制相似问题