【问题标题】:basic - multiple categories from each item at foreach loop in PHP/mySQL基本 - PHP/mySQL 中 foreach 循环中每个项目的多个类别
【发布时间】:2018-03-24 18:10:49
【问题描述】:

我有类别表。一个项目在表 3 中可能有多个类别。如下三张表:

表1:

ID  Item_id
1   1
2   2
3   3
4   4
5   5

表2:

   ID Item_id Category
   1   1  catId_1
   2   2  catId_1
   3   2  catId_2
   4   3  catId_2
   5   3  catId_3
   6   3  catId_4
   7   4  catId_2
   8   5  catId_1
   etc.

第三个表只有类别名称的信息:

表3:

Category_id  category_name
catId_1     cats
catId_2     dogs
catId_3     IT_managers
catId_4     Trump_lovers

我做了一个查询来获取所有项目的 PDO 对象,并能够从 php 中的每个项目中获取类别。

第一个查询:

public function getCategories(){
$this->db->query('SELECT table1.*, table2.*, table3.*
       FROM table1
       INNER JOIN table2
       ON table1.item_id = table2.item_id
       INNER JOIN table3
       ON table2.category=table3.category_id');

$results = $this->db->resultset();
return $results;}

$items = $offer_class -> getCategories();

如何在 foreach 循环中获取每个项目的所有类别名称?

我已经尝试过这个 foreach 循环,但它只给了我每个项目的第一个类别:

<?php foreach($items as $item){
echo $item->category_name; 
}
?>

【问题讨论】:

  • 从 table2 中选择任何东西都没有意义。只是说'
  • @Strawberry- 你是对的

标签: php mysql foreach


【解决方案1】:

您可以将其拆分为 2 个查询。 - 一个查询在 Table1、Table2 中查找所需的内容,另一个查询查找与项目匹配的 category_name。

在您的 foreach 循环中,您将创建一个新的 foreach 循环,在其中列出 category_name 数据。

关于您的评论,您可以这样做:

<?php

$items = array("test", "test2",array("CAT1","CAT2","CAT3","CAT4"));



foreach($items as $t)
{
    if(!is_array($t))
    {
        echo $t;
    } 
    else
    {

        foreach($t as $ar)
        {
            echo $ar . " ";
        }
    }
}

【讨论】:

  • 当然,这可能有效,但我假设当前查询的结果具有两个类别。我的问题是 - 如何从每个项目的 $items 对象中获取它们
  • 更新了答案以满足您的愿望。
  • 感谢您的帮助,我会尽快查看并写下它是否有效
  • @gileneusz - 您对此答案有任何反馈意见是否被接受?
  • 还没有,我今天看看这个。我跳过了这个问题,我已经看过 jscripts,但我仍然记得,抱歉这个延迟
猜你喜欢
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多