2

我有以下代码:

<?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

4 回答 4

6

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

$data = array();
while ( $row = mysql_fetch_assoc($result) )
{
    $data[] = $row;
}
echo json_encode( $data );
于 2012-06-04T07:35:16.297 回答
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 ));
于 2012-06-04T07:32:12.073 回答
0

您可能希望在循环中这样做:

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

代替:

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

这样每行一个数组会附加到输出数据数组上,否则您只会输出最后一项。

于 2012-06-04T07:31:52.633 回答
-1

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

利用

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

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

现在享受 ;)

于 2012-06-04T07:37:17.910 回答