【问题标题】:PHP MySQL JSON outputPHP MySQL JSON 输出
【发布时间】:2013-07-31 12:05:21
【问题描述】:

我正在尝试从 MySQL 表中获取数据并以以下格式创建 JSON 输出。

{
    markers: [
    {
       latitude: 57.7973333,
       longitude: 12.0502107,
       title: "Angered",
       content: "Representing :)"
    },
    {
       latitude: 57.6969943,
       longitude: 11.9865,
       title: "Gothenburg",
       content: "Swedens second largest city"
    }
  ]
}

这是我用来生成 JSON 的 PHP

$model  = array();

    $query = "SELECT title, content, lat, lng FROM locations_tbl";

    //Get records from database
    $result = mysql_query($query, $con);

    if(mysql_num_rows($result)) {
        while($e = mysql_fetch_assoc($result)) {
            $model['title'][]       = $e['title'];
            $model['content'][] = $e['content'];
            $model['lat'][]     = $e['lat'];
            $model['lng'][]     = $e['lng'];
        }
    }

    header('Content-type: application/json');
    print json_encode(array('marker'=>$model));

以下是我使用上述代码得到的输出:

{
   marker: {
      title: [
          "Marker 1",
          "Marker 2",
          "Marker 3",
          "Marker 4",
          "Marker 5"
       ],
       content: [
          "Text 1",
          "Text 2",
          "Text 3",
          "Text 4",
          "Text 5"
       ],
       lat: [
          "46.99065400",
          "47.03520400",
          "47.20387700",
          "47.62574900",
          "47.43443400"
       ],
       lng: [
          "-122.92164800",
          "-122.81614600",
          "-122.24486400",
          "-122.14453800",
          "-122.46088200"
       ]
   }
}

有什么建议吗?

【问题讨论】:

  • @user2495292 您的 JSON 无效,您可以使用此验证器查看有效性jsonlint.com
  • 我更正了你的 JSON,检查这是否是正确的 JSON? pastebin.com/BeLxGZKy

标签: php mysql google-maps-api-3 json


【解决方案1】:

像这样创建数组:

    $i = 0;
    while($e = mysql_fetch_assoc($result)) {
        $model[$i]['title']       = $e['title'];
        $model[$i]['content']     = $e['content'];
        $model[$i]['lat']         = $e['lat'];
        $model[$i]['lng']         = $e['lng'];
        $i++;
    }

【讨论】:

  • 感谢修复!
【解决方案2】:

试试这个

       $i = 0;
       while($e = mysql_fetch_assoc($result)) {
            $model[$i]['title']       = $e['title'];
            $model[$i]['content'] = $e['content'];
            $model[$i]['lat']     = $e['lat'];
            $model[$i]['lng']     = $e['lng'];
            $i++;
        }

希望对你有帮助

【讨论】:

    【解决方案3】:

    您实际上永远不会为每个标记创建一个新数组:

    $model = array("markers" => array());
    if(mysql_num_rows($result)) {
        while($e = mysql_fetch_assoc($result)) {
            $marker = array();
            $marker['title']    = $e['title'];
            $marker['content']  = $e['content'];
            $marker['lat']      = $e['lat'];
            $marker['lng']      = $e['lng'];
            $model["markers"][] = $marker;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多