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

时间:2015-10-14 13:58:29

标签: php mysql oop pdo

我想从数据库中创建记录并将它们设置为之前采用的特定类别。我有这个类和方法:

<?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 方法中包含的此查询时,我的眼睛将会在此列表中被释放(因为我正在考虑此问题):

屏幕:

List category and forum

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

1 个答案:

答案 0 :(得分:0)

您可以使用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不明确的错误,在这种情况下,您只需给category.id一个别名。

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