【问题标题】:How to make JSON in Slim php如何在 Slim php 中制作 JSON
【发布时间】:2015-07-02 02:54:22
【问题描述】:

我的代码是:-

<?php
include 'dbConfig.php';
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();

$slim_app = new \Slim\Slim();
$slim_app->get('/getStore','getStore');
$slim_app->run();

function getStore(){
    $app = \Slim\Slim::getInstance();
    try{
        $data = array();
        $pdo = getDB();
        $sql = "SELECT cat_title,cat_id FROM category";
        $stmt = $pdo->query($sql);
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
        foreach ($result as $value) {
        //var_dump($value);
            $data[] = $value;
        }
        $menu = array('menus'=>$data);
        echo json_encode($menu);
    }catch(PDOException $e){
        $app->response()->setStatus(404);
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}
?>

这是我的输出:

{
    "menus": [
        {
            "cat_title": "Travel",
            "cat_id": "8"
        },
        {
            "cat_title": "Just Kidding",
            "cat_id": "9"
        },
        {
            "cat_title": "Lifestyle",
            "cat_id": "12"
        },
        {
            "cat_title": "Love & Gifts",
            "cat_id": "14"
        },
        {
            "cat_title": "Foodies Bay",
            "cat_id": "15"
        },
        {
            "cat_title": "Ladies Only",
            "cat_id": "16"
        },
        {
            "cat_title": "Megastores",
            "cat_id": "26"
        },
        {
            "cat_title": "Sweet Home",
            "cat_id": "27"
        },
        {
            "cat_title": "Miscellaneous",
            "cat_id": "28"
        }
    ]
}

我有另一个名为 store 的表,上面的 cat_id 和 store cat_id 有关系 存储表:

id cat_id name image value

我想从存储表中选择名称、图像、值并为每个类别制作 json 意味着我想要这样:

{
    "menus": [
        {
            "cat_title": "Travel",
            "cat_id": "8",
            "store": [
                {
                    "store_id": 1,
                    "store_name": "abc",
                    "image": "xyz.jpg",
                    "value": "abc"
                },
                {
                    "store_id": 2,
                    "store_name": "abc",
                    "image": "xyz.jpg",
                    "value": "abc"
                }
            ]
        }
    ]
}

我怎样才能实现它? 请帮忙

【问题讨论】:

  • 您使用的是哪种 DBMS?

标签: php sql arrays json slim


【解决方案1】:

首先,你的结果集已经是一个数组,你不需要创建一个新的。

对于您需要做的事情,我将声明一个准备好的语句,并且对于类别结果集中的每一行,我将使用行 cat_id 执行准备好的语句。然后我会说“商店”行属性是我的商店数组:

$pdo = getDB();
$sql = "SELECT cat_title,cat_id FROM category";
$stmt = $pdo->query($sql);

$storeSTMT = $pdo->prepare("SELECT store_id, store_name, image, value FROM store WHERE cat_id=:cat_id");

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $key => $value) {
    $storeSTMT->execute([':cat_id'=>$value['cat_id']]);
    $result[$key]['store']=$storeSTMT->fetchAll(PDO::FETCH_ASSOC);
}

$menu = array('menus'=>$result);
echo json_encode($menu);

这不是唯一的方法。您还可以查询两个表之间的连接并解析结果以生成嵌套数组。您的里程可能会有所不同。

PD:这与 Slim 框架完全无关。

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 1970-01-01
    • 2018-10-07
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 2012-06-07
    • 1970-01-01
    相关资源
    最近更新 更多