我有以下代码:
<?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也不会设置为值。我错过了什么?
答案 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;)