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

标签 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 :元素 1:苹果

echo :元素2:苹果、橘子

echo: Item3: 橘子、香蕉、菠萝

我试过这个 foreach 循环,但它只给我每个项目的第一个类别名称:

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

最佳答案

JOIN 依次返回单条记录,因此结果大致如下所示:

1, cat1, apples
2, cat1, apples
2, cat2, oranges
3, cat2, oranges
3, cat3, bananas
3, cat4, pineapples

您必须按 Item_id 对记录进行分组并一次打印所有类别名称(这将是伪伪代码,因为我不知道 php,我正在复制- 从其他几个答案中粘贴):

$dict = [];
foreach($items as $item) {
    $id = $item->Item_id
    $dict[$id][] = $item;
}

// here print all the values from the arrays
foreach($result as $arr) { 
    echo ??? // print the category_name for each element in $arr in the same line
}

关于php - 在 php foreach 循环中回显 SQL PDO 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46866240/

相关文章:

mysql - WHERE IN崩溃的MySQL

c++ - 使用 foreach 循环修改 Qt 数据结构的正确方法

javascript - 为什么 ES 6's Map.forEach iterate with ' value, key' 而不是 'key, value' ?

php - Symfony2 在导航中获取用户名

php - MySQL、PHPMyAdmin - 表列不接受十进制数据类型长度

MySQL 1h记录过去24h

mysql - 加入两个表而不返回不需要的行

c# - ForEach 不会更改/更改列表 C# 中的项目

php - 通过php显示数据库中的表

javascript - laravel 4 中没有 ajax 响应