真的需要帮助!我知道这很容易做到,但就是无法让我的大脑打开。我有一个名为'预订'的数据库表,其中是表列'StartDate' 'EventTitle' 'Fornames' '姓'
我想做的是查询数据库,并按其开始日期和标题回显事件列表,然后在每个事件旁边显示已预订到每个事件的名称。
当我运行下面的代码,它显示StartDate, EventTitle和名称,但重复这为每个条目-我希望这是有意义的。
$sql = "SELECT *
FROM Bookings";
$result = mysql_query($sql) or die (mysql_error());
$row = mysql_fetch_array($result) or die (mysql_error());
while($row = mysql_fetch_array($result)){
echo '<table>';
echo '<tr>';
echo '<td>' . $row['StartDate'] . '</td>' . '<td>' . $row['EventTitle'] . '</td>'
.'<td>' . $row['Forenames'] . '</td>';
echo '</tr>';
echo '</table>';
}
尝试:
$sql = "SELECT StartDate, EventTitle, GROUP_CONCAT(Fornames) as Attendees
FROM Bookings
GROUP BY StartDate, EventTitle";
$result = mysql_query($sql) or die (mysql_error());
echo '<table>';
while($row = mysql_fetch_assoc($result)){
echo '<tr>';
echo '<td>' . $row['StartDate'] . '</td>' . '<td>' . $row['EventTitle'] . '</td>'.'<td>' . $row['Attendees'] . '</td>';
echo '</tr>';
}
echo '</table>';
注意事项:
-
mysql_fetch_array()
不会提供$row
中的字段名,但mysql_fetch_assoc()
会提供。 - 您发布的代码将跳过结果的第一行
-
<table>
不需要放在每一行。