【发布时间】:2016-05-17 14:34:27
【问题描述】:
大家好, 我有一个问题,希望有人能帮助我。
我的 MySQL 数据库如下所示:
我想以这种方式在表格中输出这些数据:
我的实际代码如下所示:
<html>
<body>
<table>
<?php
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
include "$root/config.php";
$stmt = $pdo->prepare('SELECT * FROM TestTable ORDER BY name');
$stmt->execute();
$results = $stmt->fetchAll();
if (empty($results)) {
echo 'Error!';
} else {
foreach( $results as $row ) {
echo
"
<tr>
<td class=\"left\">".$row['name']."</td>
<td class=\"right\">".$row['address']."</td>
</tr>
";
}
}
?>
</table>
</body>
</html>
输出看起来像这样:
当职业与前一排的职业不一样时,如何让职业名称始终在最前面?
为了解决这个问题,我有这个代码:
<?php
$mysqli = new mysqli(host,username,password,db_name);
$sql = "SELECT * FROM TestTable ORDER BY profession, name";
$array = [];
$html = "";
if ($result = $mysqli->query($sql)) {
while($row = $result->fetch_assoc()) {
if (!isset($array[$row['profession']])) {
$array[$row['profession']] = array();
}
$array[$row['profession']][] = $row['name'];
}
}
foreach ($array as $profession => $name) {
$html .= '<p style="font-weight:bold">'.$profession.'</p>';
foreach ($name as $name) {
$html .= '<p class="name">'.$name.'</p>';
}
}
echo $html;
?>
但我也需要这张桌子上的街道。我需要这个带有 PDO 而不是 MySQLi 的代码。我试图解决这个问题,但没有成功。
有人可以帮帮我吗?
您好, 大卫。
【问题讨论】:
-
ORDER BY profession,然后跟踪上次看到的职业,如果不同则输出一个新的标题。 -
@eggyal 说了什么。或将
$array[$row['profession']][] = $row['name'];更改为$array[$row['profession']][] = $row;。您现在在关联数组中拥有所有数据(不仅仅是名称),按专业组织。只需在表格中输出您需要的键即可。 -
并且不要混合使用pdo和mysqli。决定你使用哪一个并坚持下去!
-
@Shadow,我知道。因此我写了“我需要这个带有 PDO 而不是 MySQLi 的代码”。我想为我的代码使用 PDO。但我不知道如何“转换”。
标签: php mysql database mysqli pdo