两个表之间的关系,显示查询结果


Relation between two tables and show query result

我想从数据库中获取记录,并将它们设置为先前采取的特定类别。我有这样的类和方法:

<?php
    class CategoryForum{
        private $dbHandler;
        public function __construct($db){
            $this->dbHandler = $db;
        }
        public function getCategories(){
            $rowCategory = $this->dbHandler->prepare("SELECT * FROM `category`");
            if($rowCategory->execute() == false){
                print_r($rowCategory->errorInfo());
                return false;
                }else{
                return $rowCategory->fetchAll(PDO::FETCH_ASSOC);
            }
            return true;
        }
        public function getForum(){
            $rowForum = $this->dbHandler->prepare("SELECT `subject`, category.id FROM category, forum WHERE category.id = forum.id_category"); 
            if($rowForum->execute() == false){
                print_r($rowForum->errorInfo());
                return false;
                }else{
                return $rowForum->fetchAll(PDO::FETCH_ASSOC);
            }
            return true;
        }
    }

我写这篇文章是基于:https://pl.wikibooks.org/wiki/PHP/Relacje_i_indeksy

当我执行这个包含在getForum方法中的查询时,我的眼睛将被释放在这个列表上(因为我得到了这个):

屏幕:

列表类别和论坛

如何建立两个表之间的关系?你能帮我吗?

您可以使用INNER JOIN

SELECT * 
FROM `category` 
INNER JOIN `forum` 
ON `category`.`id` = `forum`.`id_category`

如果您只想从两个表中选择特定的记录:

SELECT `category`.`id`, 
       `category`.`foo`, 
       `forum`.`bar`
FROM `category` 
INNER JOIN `forum` 
ON `category`.`id` = `forum`.`id_category`

你可能会得到一个错误,id是模棱两可的,如果你有一个id主键在论坛,在这种情况下,你可以只给类别。指定别名。

SELECT `category`.`id` AS categoryID,
...