Я стараюсь делать очень простые вещи, но не могу заставить его работать. Я вижу здесь несколько сложных похожих потоков, но я не могу их обойти.Создайте json, содержащий все заголовки из группы по результату запроса
Я упростил свою проблему, поэтому у меня есть только одна таблица с двумя рядами. Продукты и название. Продукты имеют схожее имя, но названия нет, и я хочу получить его в 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
UPDATE: Так я в состоянии получить 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"); – alflashy