如何将mysql_fetch_row解析为JSON对象

时间:2012-06-04 07:30:10

标签: php mysql 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也不会设置为值。我错过了什么?

4 个答案:

答案 0 :(得分:5)

无需引用每列。 $row已经是一个数组。我已经改为使用mysql_fetch_assoc,因为那个提供了命名列。

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

答案 1 :(得分: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 ));

答案 2 :(得分:0)

你可能在循环中想要这个:

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

而不是:

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

这样每行一个数组会附加到输出数据数组中,或者你只输出最后一个项目。

答案 3 :(得分:-1)

为什么在您可以直接获取associative array形式获取行时获取行,这样您就不必进行额外的编码来格式化数据。

使用

mysql_ fetch_ assoc函数来获取这些值。

还有一件事:fetchin行只会给你数字键而不是关联键。

现在ENJOY;)