2014-02-25 46 views
0
編碼獲取的數據,以JSON

我想對數據進行編碼,從Mysql數據庫進入JSON格式通過PHP.Here的代碼段:如何從MySQL通過PHP

try 
{ 
    $statement = $db->prepare($query); 
    $result = $statement->execute($query_params); 

    $rows = $statement->fetchAll(); 

    echo print_r($rows)."<br/>"; 

    foreach($rows as $row) 
    { 
     foreach($row as $a) 
    { 
     $studentInfo = array(); 
     $studentInfo["course"] = $a["coursename"]; 
     $studentInfo["grade"] = $a["grade"]; 
     array_push($response['info'], $studentInfo); 
    } 
    } 
    echo json_encode($response); 
} 

但我不能將此數組編碼爲JSON。 的print_r($rows)打印如下:

Array (
    [0] => Array (
     [id] => 22222 
     [coursename] => sp1 
     [grade] => B 
    ) 
    [1] => Array (
     [id] => 22222 
     [coursename] => sw1 
     [grade] => A- 
    ) 
    [2] => Array (
     [id] => 22222 
     [coursename] => sw2 
     [grade] => B+ 
    ) 
) 
1 

和回聲json_encode($response)打印以下內容:

{"info":null} 

任何人都可以請告訴我如何解析這個數組轉換成JSON? 我想以JSON格式學習每門課程及其成績。

+1

刪除內部循環。 '$ row'有你正在尋找的內容,而不是'$ a' – datasage

+2

或者只是'json_encode(array('info'=> $ rows))''你原來的'$ rows'' ...不需要*任何*的循環.. –

+0

感謝datasage。刪除內部循環解決了porblem! – Zak

回答

2
try 
{ 
    $statement = $db->prepare($query); 
    $result = $statement->execute($query_params); 

    $rows = $statement->fetchAll(); 

    echo print_r($rows)."<br/>"; 

    $response=array(); 
    $info=array(); 

    foreach($rows as $row) 
    {  
     $studentInfo = array(); 
     $studentInfo["id"]=$row["id"]; 
     $studentInfo["course"] = $row["coursename"]; 
     $studentInfo["grade"] = $row["grade"]; 
     array_push($info, $studentInfo);  
    } 

    $response['info']=$info; 
    echo json_encode($response); // or echo json_encode($info);// whatever you want 
} 
1

我會做這樣的事情:

try { 
    $statement = $db->prepare($query); 
    $result = $statement->execute($query_params); 
    if($result) { 
     $arr = Array(); 
     while ($row = $result->fetch_assoc()) { 
      $arr[] = $row; 
     } 
    echo json_encode($arr); 
    } 
} 
0

json_encode()可以直接編碼陣列。

你的代碼行8,能做到這一點

echo json_encode($rows); 

請點擊此處參考更多的信息 http://php.net/manual/en/function.json-encode.php

<?php 
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); 

echo json_encode($arr); 
?> 

輸出:
{ 「一」:1,「B 「:2,」c「:3,」d「:4,」e「:5}