在php foreach循环中回显SQL PDO对象

时间:2017-10-21 17:49:49

标签: php mysql foreach

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

表1:

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

表2:

   ID Item_id Category
   1   1      cat1
   2   2      cat1
   3   2      cat2
   4   3      cat2
   5   3      cat3
   6   3      cat4
   7   4      cat2
   8   5      cat1
   etc.

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

表3:

Category_id  category_name
cat1        apples
cat2        oranges
cat3        bananas
cat4        pineapples

我做了一个查询来获取所有项目的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循环中每个项目的所有类别名称,如下所示:

echo:Item1:apples

回声:第2项:苹果,橙子

回声:第3项:橙子,香蕉,菠萝

我已尝试过这个foreach循环,但它只为每个项目提供了第一个类别名称:

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

1 个答案:

答案 0 :(得分:0)

JOIN会连续返回单个记录,因此结果看起来或多或少如下:

.scrollable-panel{
      height:300px;
      overflow-y:scroll;
      width:100%;
      }

您必须按1, cat1, apples 2, cat1, apples 2, cat2, oranges 3, cat2, oranges 3, cat3, bananas 3, cat4, pineapples 对记录进行分组,并立即打印所有类别名称(这将是伪伪代码,因为我不知道php和我&#39 ; m从其他几个答案复制粘贴):

Item_id