从我的论坛中获取他们在 medoo 中的子论坛的所有主题
Get all topics from my forums their sub-forums in medoo
我正在尝试从我的论坛和其中的子论坛中获取所有主题。但是,出于某种原因,我的代码无法正常工作。它没有给我任何错误,但它显示了错误的信息。我正在使用 medoo。
这是我的功能:
public function getForumTopicsCount($forumId)
{
$getForumTopicsCount = $this->db->count('forum_topics', [
"topic_forum" => $forumId
]);
$subForums = $this->db->query("SELECT * FROM `forums` WHERE forum_subforum = $forumId")->fetchAll();
$c = 0;
foreach($subForums as $subForum) {
$subForumTopics = $this->db->query("SELECT * FROM `forum_posts`")->fetchAll();
foreach($subForumTopics as $topic) {
if ($subForum['forum_id'] == $topic['topic_forum']) {
$c++;
}
}
}
return $getForumTopicsCount + $c;
}
所以在我的数据库中我有一个 table 论坛,并且有一列 forum_subforum 这是一个整数,它的值是他们的头论坛的 ID。我还有一个 forum_topics table,它包含我整个论坛中的所有主题,其中我有一个名为 topic_forum 的列,它也是整数,是论坛的 ID主题属于。
感谢您的帮助。非常感谢。
我不是 100% 确定我理解你的问题,但从你的代码我猜你想知道给定论坛中有多少主题,包括该论坛可能有的任何子论坛。
我相信下面的查询应该能做到这一点:
select count(*) from forum_topics
right join forums on forum_topics.topics_forum = forums.id
where forums.forum_id = :id or forums.forum_subforum = :id
请允许我对您的代码发表一些评论:
- 避免
select *
,除非你真的需要所有数据。将您的查询限制在您需要的范围内。
- 使用准备好的语句,而不是按照您的方式使用变量组合查询。如果您收到的 $formId 来自不安全的来源,这可能会引发安全问题。
- 在循环内运行查询时要小心。你应该问问自己是否真的有必要。在这种情况下,单个查询就足够了
- 比较和搜索大型集合中的数据是数据库的设计目的。尽可能让他们完成工作,而不是获取大量数据并在 php.
中进行处理
我正在尝试从我的论坛和其中的子论坛中获取所有主题。但是,出于某种原因,我的代码无法正常工作。它没有给我任何错误,但它显示了错误的信息。我正在使用 medoo。 这是我的功能:
public function getForumTopicsCount($forumId)
{
$getForumTopicsCount = $this->db->count('forum_topics', [
"topic_forum" => $forumId
]);
$subForums = $this->db->query("SELECT * FROM `forums` WHERE forum_subforum = $forumId")->fetchAll();
$c = 0;
foreach($subForums as $subForum) {
$subForumTopics = $this->db->query("SELECT * FROM `forum_posts`")->fetchAll();
foreach($subForumTopics as $topic) {
if ($subForum['forum_id'] == $topic['topic_forum']) {
$c++;
}
}
}
return $getForumTopicsCount + $c;
}
所以在我的数据库中我有一个 table 论坛,并且有一列 forum_subforum 这是一个整数,它的值是他们的头论坛的 ID。我还有一个 forum_topics table,它包含我整个论坛中的所有主题,其中我有一个名为 topic_forum 的列,它也是整数,是论坛的 ID主题属于。
感谢您的帮助。非常感谢。
我不是 100% 确定我理解你的问题,但从你的代码我猜你想知道给定论坛中有多少主题,包括该论坛可能有的任何子论坛。
我相信下面的查询应该能做到这一点:
select count(*) from forum_topics
right join forums on forum_topics.topics_forum = forums.id
where forums.forum_id = :id or forums.forum_subforum = :id
请允许我对您的代码发表一些评论:
- 避免
select *
,除非你真的需要所有数据。将您的查询限制在您需要的范围内。 - 使用准备好的语句,而不是按照您的方式使用变量组合查询。如果您收到的 $formId 来自不安全的来源,这可能会引发安全问题。
- 在循环内运行查询时要小心。你应该问问自己是否真的有必要。在这种情况下,单个查询就足够了
- 比较和搜索大型集合中的数据是数据库的设计目的。尽可能让他们完成工作,而不是获取大量数据并在 php. 中进行处理