【发布时间】:2015-10-13 01:50:15
【问题描述】:
我正在尝试做一些非常简单的事情,但无法让它发挥作用。我在这里看到了一些复杂的类似线程,但我无法解决这些问题。
我简化了我的问题,所以我只有一张两行的表。产品和标题。产品具有相似的名称,但标题没有,我想以 json 格式获取它,但我坚持要简单地获取所有标题。这是我的代码
$query = mysqli_query($con, "SELECT* FROM mylist GROUP BY products");
while($row = $query->fetch_array()){
echo $row['products'].' - ';
echo $row['title'];
echo "<br>";
我得到的结果是这样的
prod1 - title 4
prod2 - title 2
prod3 - title 3
但我期待这个
prod1 - title 4, title 1
prod2 - title 2
prod3 - title 3
然后用json编码
更新: 所以我可以像这样得到 JSON
{"prod1":["title 4,title 1"],"prod2":["title 2"],"prod3":["title 3"]}
使用此代码
$request = <<< EOT
SELECT products, GROUP_CONCAT(title) AS title
FROM mylist
GROUP BY products
ORDER BY products ASC;
EOT;
$rows = $con->query($request)->fetchAll(PDO::FETCH_ASSOC);
$items= array();
foreach ($rows as $row){
$days[$row['products']]= explode(",", $row['title']);
}
var_dump($items);
echo json_encode($items);
但我仍在寻找一些小的调整。我怎样才能得到这样的json
{
"prodlist": {
"prod1": [
{
"title": "title5"
},
{
"title": "title1"
}
],
"prod2": [
{
"title": "title5"
}
]
}
}
【问题讨论】:
-
尝试使用 GROUP_CONCAT。
-
是的,谢谢,但不确定是否是最好的方法,也不确定如何添加另一行 $query = mysqli_query($con, "SELECT products, GROUP_CONCAT(title)as title FROM mylist GROUP BY products ");
标签: php group-by group-concat