试图从mysql获取json格式化程序

时间:2015-07-04 22:41:47

标签: php mysql json

我试图从mysql中获取格式化程序json,但我不知道怎么能得到它。

[{"loc":data1,"0":data2,"title":"data3","1":"data4"},
{"loc":data1,"0":data2,"title":"data3","1":"data4"}]

输出:

[{"loc":[data1,data2], "title":"data3 data4"},
{"loc":[data1,data2], "title":"data3 data4"}]

我想改为:

{{1}}

我的代码应该更改什么?

3 个答案:

答案 0 :(得分:2)

尝试此查询,看看它是否为您提供了所需的输出

        SELECT
    CONCAT('[', 
            GROUP_CONCAT('
                  CONCAT('{"loc": [', data1, data2, '], ')
                , CONCAT('"title": "', data3, data4 ,'"}')
                )
, ']')
        FROM database

你也可以做这样的事情

SELECT
  CONCAT(data1,data2) AS loc
, CONCAT(data3,data4) as title 
FROM database';

然后在PHP中你可以这样做

$feature = array(array('loc'=> $row['loc'],
                 'title' => $row['title']));
echo json_encode($feature);

答案 1 :(得分:1)

您应该像这样更改$ feature行:

$feature = array('loc' => array($row['data1'], $row['data2']),'title' => $row['data3'].' '.$row['data4']);

对于每一行,这将导致类似于以下的json blob:

  

{" loc":[" data1"," data2"]," title":" data3 data4&#34 ;}

<强>解释

  • loc:你想要一个数组。所以你要用PHP中的array()来定义它。如果要将值转换为数字,只需在需要时进行类型转换:

    array((float)$ row [&#39; data1&#39;],(float)$ row [&#39; data2&#39;])

  • title:只需将两个字符串连接点和中间的空格即可。

答案 2 :(得分:1)

你的循环不正确应该是:

while($row = mysql_fetch_assoc($dbquery)) {
    $feature = array('loc' => array(
                              $row['data1'],$row['data2']
                              ),
                     'title' => $row['data3'] .' '.$row['data4']
                );
    array_push($geojson,$feature);
};