PHP / MYSQL我需要SQL加入吗?

时间:2018-04-14 13:10:42

标签: php mysql sql

我知道这可能是一个愚蠢的问题,但我对SQL Joins不是很有经验,而且我不想在不完全知道这是正确的事情的情况下这样做。

我创建了一个配方网站,它有不同的类别,如面包,饼干,蛋糕等。这些都在数据库的类别表中。我在食谱表中有食谱。

我面临的问题是,在类别页面上,因为每个类别都有自己的ID我创建了一个页面,其中每个类别重定向到并使用此代码

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

此页面根据ID提供不同的类别,ID在网址中更改,因此对于面包类别,它将如下所示:

  

的index.php P =选择&安培;?ID = 1

因此,由于每个类别都有一个页面,我希望它显示食谱,我使用了这段代码:

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

但这会显示数据库中的每个食谱,我想要的是根据下面的类别显示食谱:

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

cat_id是类别表的一部分,所以我是否需要将此表连接到配方表才能使其正常工作?

请务必告诉我是否遗漏了某些内容,

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

是的,你错过了什么 必须在配方表中添加列cat_id,它等于类别表中的cat_id 在食谱表中添加项目时 然后很简单

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

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

答案 1 :(得分:0)

如果一个食谱一个类别,那么,

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";