Php MySQL连接-循环所有类别和输出项
我的桌子: 类别:Php MySQL连接-循环所有类别和输出项,php,mysql,sql,join,Php,Mysql,Sql,Join,我的桌子: 类别: id (int) name (varchar) 项目: id (int) name (varchar) category (int) 是否可以使用如下方式输出数据: Category1 --------- Item1 Item2 Category2 --------- Item3 Item4 $query = mysql_query("SELECT id, name FROM categories"); while ($row = mysql_fetch_assoc
id (int)
name (varchar)
项目:
id (int)
name (varchar)
category (int)
是否可以使用如下方式输出数据:
Category1
---------
Item1
Item2
Category2
---------
Item3
Item4
$query = mysql_query("SELECT id, name FROM categories");
while ($row = mysql_fetch_assoc($query))
{
echo $row["name"];
$query2 = mysql_query("SELECT * FROM dishes WHERE category = {$row["id"]}");
while ($row2 = mysql_fetch_assoc($query2))
{
echo ...
}
}
使用JOIN?我可以这样做:
Category1
---------
Item1
Item2
Category2
---------
Item3
Item4
$query = mysql_query("SELECT id, name FROM categories");
while ($row = mysql_fetch_assoc($query))
{
echo $row["name"];
$query2 = mysql_query("SELECT * FROM dishes WHERE category = {$row["id"]}");
while ($row2 = mysql_fetch_assoc($query2))
{
echo ...
}
}
但是,正如您所知,这是一种可怕的方法,永远不应该这样做。确实,使用联接,然后按类别排序。在PHP中,您只需检查类别是否已更改为下一个类别,如果已更改,则显示一个漂亮的表标题(代码待定) 另外,您真的不应该再使用mysql扩展了。它已被弃用。相反,您应该使用MySQLi或PDO扩展
$SQL = "SELECT c.name, d.*
FROM categories AS c
JOIN dishes AS d ON ( d.category = c.id )
ORDER BY c.name ASC";
$result = mysql_query($SQL) or die (mysql_error());
$oldCategory = null;
while ($row = mysql_fetch_assoc($result))
{
if( $oldCategory != $row["name"] )
{
echo $row["name"];
$oldCategory = $row["name"];
}
print_r( $row );
}
mysql_free_result($result);
NBmysql_*已被弃用。。。使用mysqli_*或pdo 谢谢!我知道。。。我只是把这段代码放在一起演示我在做什么:)