2012-06-04 74 views
2

我有以下代碼:如何分析和mysql_fetch_row成JSON對象

<?php 
include 'db.php'; 
$con = mysql_connect($host,$user,$pass); 
$dbs = mysql_select_db($databaseName, $con); 

$tableName = "tbl_title"; 
$result = mysql_query("SELECT id, fld_title FROM $tableName"); 

$data = array(); 
while ($row = mysql_fetch_row($result)) 
{ 
    //$data[] = $row; 
    //$data['item'][] = $row; 
    //$data['item'][] = $row['id'].value; 
    $id = $row['id']; 
    $fld_title = $row['fld_title']; 
    $data = array("id" => $id, "fld_title" => $fld_title); 

    //echo $row['id'] . " " . $row['fld_title']; 
      //echo '<option value="'.$row->id.'">'.$row->fld_title.'</option>'; 
} 
echo json_encode($data); 
    // echo $row[0] . " " . $row[1]; 
?> 

我想但是返回的結果格式化的方式,即使我得到的查詢,$ ID和$結果fld_title不會被設置爲一個值。我錯過了什麼?

回答

5

沒有必要引用每一列。 $row已經是數組了。我已更改爲使用mysql_fetch_assoc,因爲該名稱給出了命名列。

$data = array(); 
while ($row = mysql_fetch_assoc($result)) 
{ 
    $data[] = $row; 
} 
echo json_encode($data); 
+0

啊哈!這正是我錯過的...... – NinjaCat

0

你可能想在這個循環中:

$data[] = array("id" => $id, "fld_title" => $fld_title); 

代替:

$data = array("id" => $id, "fld_title" => $fld_title); 

所以每行一個數組追加到輸出數據陣列,否則你會只輸出最後項目。

4
$data = array(); 
while ($row = mysql_fetch_row($result)) 
{ 
    $data[] = array("id" => $row['id'] ,"fld_title" => $row['fld_title']); 
} 
var_dump(json_encode($data)); 

更新
通過ID得到它:(我想這是唯一的)

$data = array(); 
    while ($row = mysql_fetch_array($result)) 
    { 
     $data[$row['id']] = array("id" => $row['id'] ,"fld_title" => $row['fld_title']); 
    } 
    var_dump(json_encode($data)); 
+0

笑抓取行只給出數值數組沒有關聯數組 –

+0

還沒右'mysql_fetch_row'將返回數字鍵排列不相關聯。 –

+0

@VIPINJAIN剛更新了它。 – Oyeme

-1

爲什麼取行,以便你沒有做額外的編碼格式的數據時,你可以獲取associative array形式直接結果。

使用

mysql_ fetch_ assoc函數來獲取這些值。

還有一件事:fetchin行會給你只有數字鍵而不是聯想鍵。

現在享受;)

+3

刪除了「LOL」,因爲這實際上很粗魯。 –