正如标题所述,我的目标是使用 MySQL 数据库中的数据生成一个 HTML 表。
我使用的一般方法是合理的,因为我手动编写了一系列单元格,但我正在尝试将其缩放以包含大量字段,因此我正在尝试使用 PHP 和 foreach 循环为单元格编写 HTML与数组。我已经写出了我工作的背景和步骤,既可以为我的问题提供背景,也可以为处于类似情况的人们提供一般帮助。但是,我知道我遇到的问题特别在于代码的一部分 - 如果您想直接跳到它,请在下面清楚地指出。
第 1 步为我希望字段具有的标题和 MySQL 数据库中的列名定义数组:
$titles = array('Name', 'Age', 'Height', 'Weight');
$headers = array('q1', 'q2', 'q3', 'q4');
第二步:连接数据库(之前定义的$username和$password):
try {
$pdo = new PDO('mysql:host=localhost; dbname=db01', $username, $password);
$pdo->exec("SET CHARACTER SET utf8");
第 3 步:通过一些连接创建我的 SQL 语句,并获取 $result:
$sql ="SELECT";
foreach(array_combine($headers, $titles) as $header => $title) {
$sql .= "`$header` AS `$title`,";
}
$sql .= "`q5` AS `Eye Color`";
$sql .= "FROM samdata.CO_data";
$result = $pdo->query($sql);
第 4 步:通过连接静态 HTML 和上述 SQL 查询的结果来创建 $html_table
if($result !== false) {
$html_table = '<table><tr>';
foreach($titles as $title) {
$html_table .= "<th> $title </th>";
}
$html_table .='</tr> <tr>';
//*********PROBLEM SECTION BELOW **************************
foreach(array_combine($result, $titles) as $row => $title) {
$html_table .= "<td>' .$row\['$title'\]. '</td>";
}
}
//*********PROBLEM SECTION ABOVE **************************
$html_table .= '</tr> </table>';
$conn = null;
echo $html_table;
}
我知道问题出在指示的部分,因为我已经测试了所有其他部分,并且如果我手动写出而不是组合数组/ foreach 循环,例如:
foreach($result as $row) {
$html_table .= '
<tr>
<td>' .$row['Names']. '</td>
<td>' .$row['Age']. '</td>
<td>' .$row['Height']. '</td>
</tr>';
}
代替循环,它可以正常工作并显示这些标题的每个结果的数据,问题是我有数百个并且想要更优雅(和懒惰)而不是一个一个地写出来!
我哪里错了?非常感谢您的帮助。