[英]How to convert MySQL table into JSON using PHP?
我该如何转换:
使用PHP转换为有效的JSON文件?
我试过了:
$sql="SELECT ... more code here";
$result = $pdo->query($sql);
$rows = $result->fetchAll(PDO::FETCH_ASSOC);
$real= implode(",",array_map(function($a) { return $a["real"]; }, $rows));
$orcamento = implode(",",array_map(function($a) { return $a["orcamento"]; }, $rows));
$desvio = implode(",",array_map(function($a) { return $a["desvio"]; }, $rows));
echo "{'name': 'orcamento', 'data': [$orcamento]},
{'name': 'real', 'data': [$real]},
{'name': 'desvio', 'data': [$desvio]}";
返回:
{'name': 'orcamento', 'data': [14000.00,8500.00,0.00]},
{'name': 'real', 'data': [2038.00,120.00,15000.00]},
{'name': 'desvio', 'data': [-11962.00,-8380.00,15000.00]}
根据JSONLint哪一个无效(并且我认为我的其余代码无法正常工作的原因。我得到:
Parse error on line 1:
{ 'name': 'orcamento',
-----^
Expecting 'STRING', '}'
所以我的问题是:如何修复我的PHP代码以获得有效的JSON?
编辑:我也尝试过:
$sql="SELECT ....";
$result = $pdo->query($sql);
$rows = $result->fetchAll(PDO::FETCH_ASSOC);
$registos= json_encode($rows);
echo $registos;
这将返回有效的JSON,但格式错误:
[
{
"real": "2038.00",
"orcamento": "14000.00",
"desvio": "-11962.00"
},
{
"real": "120.00",
"orcamento": "8500.00",
"desvio": "-8380.00"
},
{
"real": "15000.00",
"orcamento": "0.00",
"desvio": "15000.00"
}
]
为了安全起见,请使用json_encode
像这样:
$real = array_map(function($a) { return $a["real"]; }, $rows);
$orcamento = array_map(function($a) { return $a["orcamento"]; }, $rows);
$desvio = array_map(function($a) { return $a["desvio"]; }, $rows);
echo json_encode(array(
array('name' => 'orcamento', 'data' => $orcamento),
array('name' => 'real', 'data' => $real),
array('name' => 'desvio', 'data' => $desvio)
));
(但实际上,在原始输出中,缺少[
和]
包围对象的内容,您需要使用双引号"
来引用键和字符串)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.