php/mysql我需要加入sql吗?

y1aodyip  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(296)

我知道这可能是一个愚蠢的问题,但我不是很有经验的sql连接,我不想做这件事,如果不完全知道这是正确的做法。
我已经创建了一个食谱网站,有不同的类别,如面包,饼干,蛋糕等,这些都在数据库的类别表。我在食谱表上有食谱。
我面临的问题是,在category页上,由于每个category都有自己的id,所以我创建了一个页面,其中每个categories重定向到并使用了此代码

<a href="index.php?p=selected&id=<?php echo $recipe['cat_id']; ?>">

这一页根据id提供了不同的类别,id在url中更改,因此对于面包类别,它如下所示:
index.php?p=selected&id=1
因此,由于每个类别都有一个页面,我希望它显示菜谱,所以我使用了以下代码:

$query = "SELECT * FROM recipes ORDER BY recipe_id ASC";

但这会显示数据库中的每一个配方,我想让它根据它所属的类别显示配方,如下所示:

$query = "SELECT * FROM recipes WHERE cat_id = :id ORDER BY recipe_id ASC";

catu id是category表的一部分,所以我是否需要将此表连接到recipe表以使其正常工作?
如果我错过了什么,一定要告诉我,
谢谢你抽出时间。

jc3wubiy

jc3wubiy1#

是的,你们遗漏了一些东西,当你们在菜谱表中添加项目时,必须在菜谱表中添加与类别表中的类别id相等的类别id列,然后就简单了

$query = "SELECT * FROM recipes
WHERE recipes.cat_id = :id";

$id = intval($_GET['id']);
$query = "SELECT * FROM recipes
WHERE recipes.cat_id = $id";
6jygbczu

6jygbczu2#

如果一个配方一个类别,

SELECT * FROM recipes inner join category
on category.id=recipe.cat_id
 where cat_id = :id ORDER BY recipe_id ASC";

如果一个类别有许多食谱那么

SELECT * FROM recipes leftjoin category
    on category.id=recipe.cat_id
     where cat_id = :id ORDER BY recipe_id ASC";

相关问题