我的目标很简单:我想生成一个HTML表格,其中的标题显示了MySQL表格的列名和显示该MySQL表格内容的正文。我正在尝试使用循环尽可能高效 - 标题是小菜一碟:
$columns = mysql_query("SHOW COLUMNS FROM my_table;");
while($row = mysql_fetch_array($columns)) {
echo '<th>'.$row['Field'].'</th>';
}
但我无法获取身体数据,并希望有人可以提供帮助。以下是我认为 的工作方式:
$query = mysql_query("SELECT * FROM my_table;");
while($row = mysql_fetch_array($query)) {
echo '<tr>';
foreach($row as $r) {
echo '<td>'.$r.'</td>';
}
echo '</tr>';
}
但上面的代码返回每个值的两个实例(value1,value1,value2,value2 ......),我很确定这是因为数组中的每个值实际上都有两个键(数字和文本)一),所以每次打印两次。我无法弄清楚如何让它只打印一次。我也尝试了下面的代码,而不是foreach循环 - 这段代码实际上打印了表的12个字段中的每一个,但随后打印了12个空的td标记,再次因为它重复计算了数组中的项目数:
for($i =0; $i < count(array_keys($row)); $i++) {
echo '<td>'.$row[$i].'</td>';
}
基本上,我只需要一个能够返回数组正确长度的函数,最好使用foreach循环,但我也可以使用lopp - 无论什么都可以!有什么想法吗?
答案 0 :(得分:3)
只需将mysql_fetch_assoc或mysql_fetch_row替换为mysql_fetch_array。
请注意,您可以使用mysql_field_name代替SHOW COLUMNS
查询。但是,您必须稍微调整一下代码。
答案 1 :(得分:0)
$query = mysql_query("SELECT * FROM my_table;");
$table = mysql_fetch_array($query)
foreach ($table as $row) {
echo '<tr>';
foreach ($row as $field) {
echo '<td>'.$field.'</td>';
}
echo '</tr>';
}
编辑:认为这会有用......