我正在尝试做非常简单的事情,但无法让它发挥作用。我在这里看到一些复杂的类似线程,但我无法解决这些问题。
我简化了我的问题所以我只有一个包含两行的表。产品和标题。产品有相似的名称,但标题没有,我想在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"
}
]
}
}
答案 0 :(得分:0)
您需要GROUP_CONCAT
这样
SELECT products, GROUP_CONCAT(title ORDER BY products ASC SEPARATOR ', ') AS prods
FROM mylist
GROUP BY products
以下是完整的SQL小提琴:http://sqlfiddle.com/#!9/38681/7