【发布时间】:2015-02-22 13:13:38
【问题描述】:
我有类别和子类别结构的数据库:
category:
subcategory:
我希望通过 PHP 获得所需格式的 JSON。我尝试了大部分时间,但没有成功。
{
"success":"true",
"category_1":{
"cat_id":"1",
"cat_name":"menu1",
"cat_img":"cat1.jpg",
"sub_category":[
{
"sub_id":"1",
"sub_name":"sub name"
},
{
"sub_id1":"2",
"sub_name1":"sub name"
},
{
"sub_id2":"3",
"sub_name2":"sub name"
},
{
"sub_id3":"4",
"sub_name3":"sub name"
}
]
},
"category_2":{
"cat_id":"2",
"cat_name":"menu2",
"cat_img":"cat2.jpg",
"sub_category":[
{
"sub_id":"1",
"sub_name":"sub name"
},
{
"sub_id1":"2",
"sub_name1":"sub name"
}
]
},
"category_3":{
"cat_id":"3",
"cat_name":"menu3",
"cat_img":"cat3.jpg",
"sub_category":[
{
"sub_id":"1",
"sub_name":"sub name"
},
{
"sub_id1":"2",
"sub_name1":"sub name"
},
{
"sub_id3":"",
"sub_name1":"sub name"
}
]
}
}
我试过这段代码,但是没有用。我更喜欢 PDO 解决方案。
$servername = "localhost";
$username = "res_user";
$password = "Res@123";
$dbname = "res_db";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT *, category.id AS catId FROM category INNER JOIN sub_category ON category.id = sub_category.category_id ORDER BY category.id, sub_category.category_id";
$res = mysqli_query($conn, $sql);
$categoryArray = array();
$oldCatId = 0;
while ($row = mysqli_fetch_assoc($res)) {
if ($row['catId'] != $oldCatId) {
$categoryArray[$row['catId']] = array(
'success' => true,
'category_' . $row['catId'] = array(
'cat_id' => $row["catId"],
'cat_name' => $row['cat_name'],
'cat_img' => $row['cat_img'],
'sub_category' => array(
'sub_id' => $row['category_id'],
'sub_name' => $row['sub_name']
)
)
);
$oldCatId = $row['catId'];
} else {
$categoryArray[$row['catId']]['category_' . $row['catId']]['sub_category'][] = array(
'sub_id' => $row['category_id'],
'sub_name' => $row['sub_name']
);
}
}
echo json_encode($categoryArray);
【问题讨论】:
-
问题出在哪里?
-
我们可以看看你的 PHP 代码吗?请将其编辑到您的问题中。
-
感谢您进行编辑。 “我希望它在 PDO 中工作” - 啊,这就是我们要求事先努力的原因。这里有人为您编写了代码,代码可以工作,但仍然不符合您的要求。提问时,请确保包含所有相关细节。
-
“它不起作用” - 什么不起作用?如果可以,请更具体一些,并尝试一些调试?