假设,我的数据库中有以下表格。
POSTS:
id, title, content
CATEGORIES:
id, name
RELATION:
post_id, cat_id
在发布帖子时,我已经成功地将值插入到这些表中。
我还可以在我的主页上显示每个帖子下方的类别。但是,我担心我使用的方法非常耗费资源。
这是我在 MySQL/PHP 中所做的。
(您可以选择跳过代码,并阅读其描述以更好地理解)
//Get all the posts
$database = $connection->prepare("Select * FROM POSTS");
$database->execute(array());
$result = $database->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $r) {
$articleid = $r['id'];
//Display Post title and other things here
//Get the Category Ids
$database = $connection->prepare("Select * FROM RELATION WHERE post_id = ".$article);
$database->execute(array());
$ret_cat= $database->fetchAll(PDO::FETCH_ASSOC);
//Get names of category, and dislay them
foreach($ret_cat as $rc)
{
$catid = $rc['cat_id'];
$database = $connection->prepare("Select * FROM CATEGORIES WHERE cat_id= ".$catid);
$database->execute(array());
$ret_cat_name= $database->fetch(PDO::FETCH_ASSOC);
echo "<a href='index.php?category=".$rc['cat_id']."'>".$ret_cat_name['name']."</a> ";
}
}//End First ForEach
POSTS
从表中选择所有所需的帖子。- 使用 Foreach 循环显示每个帖子。
- 在 foreach 循环中,我使用另一个 SELECT 语句
RELATION
通过匹配POSTS.id
. - 然后,我使用另一个 foreach 循环来显示所有类别。
但是,由于表中只有类别 ID,因此RELATION
我需要显示类别的名称。
- 因此,我使用另一个 SELECT 语句从
CATEGORIES
表中获取类别的名称,方法是使用RELATION.cat_id
.
代码运行良好,我得到了我想要的。但是,我觉得有很多 mysql 请求正在生成。因此,服务器上的负载会增加。
所以,我需要知道我在做什么是对还是错。或者,如果有更简单的方法来完成这一切?