【问题标题】:Relation between two tables and show query result两个表之间的关系并显示查询结果
【发布时间】:2016-01-12 15:54:52
【问题描述】:

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

<?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

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

【问题讨论】:

  • 你能在你的数据库查询中加入吗?那是更好的选择。还是必须在 php 中进行分组?
  • 你能显示一些代码吗?

标签: php mysql oop pdo


【解决方案1】:

您可以使用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,
...

【讨论】:

    猜你喜欢
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2020-01-25
    • 2012-12-26
    相关资源
    最近更新 更多