【发布时间】:2014-05-12 06:02:48
【问题描述】:
这是一个代码。 这会从数据库中动态加载所有标题部分(即表的标题)。
以下代码可以正常工作。但是列不匹配。 即表头第一行第一列为空白,表中有错位。
代码
<table border="1">
<?php
$book_query = mysql_query("select * from book_master");
$i = 0;
while($row = mysql_fetch_assoc($book_query))
{
$columns = array_keys($row);
?>
<th>
<?php
foreach($columns as $column)
{
?>
<td><?php echo $column; ?> </td>
</th>
<?php
}
?>
<tr>
<?php
foreach($row as $key=>$value)
{
?>
<td><?php echo $value; ?></td>
<?php
}
?>
</tr>
<?php
$i++;
}
?>
</table>
编辑:
这是我的print_r($columns) 值:
Array ( [0] => Author Name [1] => Book Name [2] => Rating [3] => Location )
我知道问题出在循环上。有人可以帮帮我吗?
【问题讨论】:
-
这是很糟糕的代码——你应该将数据处理和输出分开。而且您在这里生成了无效的 HTML——您将
td元素放入th元素中; 两者都属于tr,并且不能相互嵌套。 -
CBroe - 现在工作正常。我已将 th 更改为 tr。现在没关系..是的,正如你所说 - 糟糕的代码。 ;)
-
不推荐使用 mysql 扩展。新代码应该使用 mysqli 或 PDO,两者都有重要的优势,比如支持准备好的语句。另外,除非您正在编写数据库管理程序,否则不要使用
SELECT *;只选择您需要的列。 -
outis - 表示感谢 :)
标签: php mysql for-loop foreach html-table