使用PHP从sql查询中获取特定的JSON数据

时间:2014-09-12 19:54:06

标签: php mysql sql json

我想感谢你阅读这个问题。

我的问题是。我有这个PHP代码与SQL查询:

mysql_connect($mysql_server, $mysql_login, $mysql_password);
mysql_select_db($mysql_database);

$req = "SELECT name, elements "
."FROM lwzax_zoo_item "
."WHERE application_id = '2' AND elements LIKE '%".$_REQUEST['term']."%' ";

$query = mysql_query($req);

while($row = mysql_fetch_array($query))
{
    $results[] = array('label' => $row['name'], 'desc' => $row['elements']);
}


$json = json_encode($results);
echo $json;

输出是:

[  
 {  
  "label":"0146T",
  "desc":" {\n\t\"cec36dd6-ffde-494d-b25c-8e58bff84e22\": {\n\t\t\"0\":        {\n\t\t\t\"value\": \"Ccta W\\/Wo Dye\"\n\t\t}\n\t}\n}"
 },
 {  
  "label":"64653",
  "desc":" {\n\t\"cec36dd6-ffde-494d-b25c-8e58bff84e22\": {\n\t\t\"0\": {\n\t\t\t\"value\": \"Chemodenervation Eccrine Glands Oth Area Per Day\"\n\t\t}\n\t}\n}"
 }
]

但我只需要标签数据和价值数据......所以看起来应该是这样的:

[  
 {  
  "label":"0146T",
  "desc":"Ccta W\\/Wo Dye"
 },
 {  
  "label":"64653",
  "desc":"Chemodenervation Eccrine Glands Oth Area Per Day"
 }
]
你能帮帮我吗? 非常感谢您的帮助

更新:删除$ b = json_decode($ row ['desc'],true);因为它没有被使用,只是我尝试成功的一个垃圾。

2 个答案:

答案 0 :(得分:0)

您正在解码JSON并将其分配给$b,但您没有对该变量做任何事情。使用:

    $results[] = array('label' => $row['name'],
                       'desc' => $b['cec36dd6-ffde-494d-b25c-8e58bff84e22'][0]['value']);

此外,您需要为json_decode提供第二个参数,因此它将返回一个关联数组而不是一个对象。

$b = json_decode($row['elements'], true);

答案 1 :(得分:0)

好的,首先,首先在你的循环外面初始化你的数组。

while($row = mysql_fetch_array($query))
{
    $b = json_decode($row['elements']);
    $results[] = array('label' => $row['name'], 'desc' => $row['elements']);
}

然后你应该这样做:

$results = array();
while($row = mysql_fetch_array($query))
{
    $b = json_decode($row['elements']);
    array_push($results, array('label' => $row['name'], 'desc' => json_decode($row['elements'], true));
}

最后

$json = json_encode($results);
echo $json;

看看是否有帮助。