在 PHP 的页面中包含主题时无法获取类别
Trouble getting a category when including a topic in a page in PHP
我被困在查询中。
我的目标是在单个查询中获取该数据的信息以及属于该数据类别的所有信息。
我有可用的代码,但功能有问题。错误是有多少个类别,与类别数相同的数据。
旋转
我的错:https://prnt.sc/OzPLaGHFMGP5
我的 table 我存储数据的地方:https://prnt.sc/PEqSq2mM5NKM
我的 table 我保存类别的地方:https://prnt.sc/WK7n8kAGoUWD
这是我将数据拉入页面的代码:
if (!isset($_GET['url']) || empty($_GET['url'])){
header('Location:404.php');
}
$datas = $db->prepare('SELECT * FROM post WHERE url = ?');
$datas->execute([
$_GET['url']
]);
$data = $data->fetch(PDO::FETCH_ASSOC);
if (!$data){
header('Location:404.php');
exit;
}
这是我提取数据类别的代码:
<?php $categories = $db->query('SELECT Categories.*, COUNT(posts.id) as totalCategory FROM categories
LEFT JOIN posts ON FIND_IN_SET(categories.id, posts.category_id)
GROUP BY Category.id DESC')->fetchAll(PDO::FETCH_ASSOC); ?>
<?php foreach ($category as $category): ?>
<div class="container mt-4">
<div class="row">
<div class="col-md-12">
<div class="card mb-3">
<div class="card title">
<i class="bi-folder"></i> Category: <a href="<?= 'category/' .seo($data['url']) ?>"><?=$category[ ' category_name']?></a>
<a class="Date"><?=$data['date']?> <i class="bi-clock"></i></a>
</div>
<div class="card body">
<?=htmlspecialchars_decode($data['content'])?>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
那么我的查询有什么问题,你有什么建议吗?
所以假设您的表被称为“类别”和“帖子”。
根据你目前在问题中提供的内容,我提出了以下查询:
SELECT
categories.*,
COUNT(`posts`.`id`) AS `totalPosts`
FROM `categories`
LEFT JOIN `posts` ON `posts`.`category_id` = `categories`.`id`
ORDER BY `categories`.`id` DESC
它基本上从类别中获取所有内容,并计算该类别中有多少帖子。然后我们做一个left join得到category id对应的信息,然后我们根据category id DESC进行降序(这样往下)。
如果我问错了请纠正我
我被困在查询中。
我的目标是在单个查询中获取该数据的信息以及属于该数据类别的所有信息。
我有可用的代码,但功能有问题。错误是有多少个类别,与类别数相同的数据。 旋转
我的错:https://prnt.sc/OzPLaGHFMGP5
我的 table 我存储数据的地方:https://prnt.sc/PEqSq2mM5NKM
我的 table 我保存类别的地方:https://prnt.sc/WK7n8kAGoUWD
这是我将数据拉入页面的代码:
if (!isset($_GET['url']) || empty($_GET['url'])){
header('Location:404.php');
}
$datas = $db->prepare('SELECT * FROM post WHERE url = ?');
$datas->execute([
$_GET['url']
]);
$data = $data->fetch(PDO::FETCH_ASSOC);
if (!$data){
header('Location:404.php');
exit;
}
这是我提取数据类别的代码:
<?php $categories = $db->query('SELECT Categories.*, COUNT(posts.id) as totalCategory FROM categories
LEFT JOIN posts ON FIND_IN_SET(categories.id, posts.category_id)
GROUP BY Category.id DESC')->fetchAll(PDO::FETCH_ASSOC); ?>
<?php foreach ($category as $category): ?>
<div class="container mt-4">
<div class="row">
<div class="col-md-12">
<div class="card mb-3">
<div class="card title">
<i class="bi-folder"></i> Category: <a href="<?= 'category/' .seo($data['url']) ?>"><?=$category[ ' category_name']?></a>
<a class="Date"><?=$data['date']?> <i class="bi-clock"></i></a>
</div>
<div class="card body">
<?=htmlspecialchars_decode($data['content'])?>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
那么我的查询有什么问题,你有什么建议吗?
所以假设您的表被称为“类别”和“帖子”。
根据你目前在问题中提供的内容,我提出了以下查询:
SELECT
categories.*,
COUNT(`posts`.`id`) AS `totalPosts`
FROM `categories`
LEFT JOIN `posts` ON `posts`.`category_id` = `categories`.`id`
ORDER BY `categories`.`id` DESC
它基本上从类别中获取所有内容,并计算该类别中有多少帖子。然后我们做一个left join得到category id对应的信息,然后我们根据category id DESC进行降序(这样往下)。
如果我问错了请纠正我