错误的输出json_编码PHP
我正在使用这段代码构建一个数组并将其编码为JSON错误的输出json_编码PHP,php,jquery,json,Php,Jquery,Json,我正在使用这段代码构建一个数组并将其编码为JSON while($row = mysqli_fetch_array($sql)) { $results[] = array( 'wdatatype' => $row['wdatatype'], 'wdb' => $row['wdb'], 'wbyte' => $row['wbyte'], 'wbit' => $row['wbit'], 'bitval'
while($row = mysqli_fetch_array($sql)) {
$results[] = array(
'wdatatype' => $row['wdatatype'],
'wdb' => $row['wdb'],
'wbyte' => $row['wbyte'],
'wbit' => $row['wbit'],
'bitval' => $row['bitval'],
);
}
$json = json_encode($results);
echo $json;
输出是这样的
[{"wdatatype":"DB","wdb":"100","wbyte":"0","wbit":"0","bitval":"1"}]
但是对于我的jQuery脚本,我需要输出
{"wdatatype":"DB","wdb":"100","wbyte":"0","wbit":"0","bitval":"1"}
我如何做到这一点
谢谢 您的问题似乎源于您正在创建多维数组这一事实。您正在将数组作为现有
$results
数组的元素推送。对于所需的输出,$results
应该是关联数组,而不是关联数组
如果结果集中只有一行,请尝试以下操作:
// Remove the while loop if you're only returning a single row
// such as with a LIMIT = 1 clause in your SQL statement.
$row = mysqli_fetch_array($sql);
// Push the single row as an array into $result
$results = array(
'wdatatype' => $row['wdatatype'],
'wdb' => $row['wdb'],
'wbyte' => $row['wbyte'],
'wbit' => $row['wbit'],
'bitval' => $row['bitval'],
);
// Now echo the json_encode
echo json_encode($results);
当使用json\u encode
进行转换时,上述内容将变成一个单独的对象,如下所示:
{"wdatatype":"DB","wdb":"100","wbyte":"0","wbit":"0","bitval":"1"}
而不是一组对象
注意:正如@PankajGarg和@AmalMurali所指出的,如果只返回一行,则应使用该选项。如果未能删除while循环并返回多行的结果集,则只能返回最后一行
对于包含多行的结果集,您当前的结构将非常有效
或者,正如@Nilpo所指出的,您可以通过使用mysqli\u fetch\u assoc()
为您返回关联数组来简化上述过程
$row = mysqli_fetch_assoc($sql);
// Now echo the json_encode
echo json_encode($row);
您的问题似乎源于您正在创建多维数组这一事实。您正在将数组作为现有
$results
数组的元素推送。对于所需的输出,$results
应该是关联数组,而不是关联数组
如果结果集中只有一行,请尝试以下操作:
// Remove the while loop if you're only returning a single row
// such as with a LIMIT = 1 clause in your SQL statement.
$row = mysqli_fetch_array($sql);
// Push the single row as an array into $result
$results = array(
'wdatatype' => $row['wdatatype'],
'wdb' => $row['wdb'],
'wbyte' => $row['wbyte'],
'wbit' => $row['wbit'],
'bitval' => $row['bitval'],
);
// Now echo the json_encode
echo json_encode($results);
当使用json\u encode
进行转换时,上述内容将变成一个单独的对象,如下所示:
{"wdatatype":"DB","wdb":"100","wbyte":"0","wbit":"0","bitval":"1"}
而不是一组对象
注意:正如@PankajGarg和@AmalMurali所指出的,如果只返回一行,则应使用该选项。如果未能删除while循环并返回多行的结果集,则只能返回最后一行
对于包含多行的结果集,您当前的结构将非常有效
或者,正如@Nilpo所指出的,您可以通过使用mysqli\u fetch\u assoc()
为您返回关联数组来简化上述过程
$row = mysqli_fetch_assoc($sql);
// Now echo the json_encode
echo json_encode($row);
如果有多行,输出应该是什么样子?如果有多行,输出应该是什么样子?如果有多行,输出应该是什么样子?哇!有那么简单吗?谢谢!既然所有列的名称都相同,为什么不直接使用mysqli_fetch_assoc()跳过所有这些内容?@Nilpo感谢您的反馈/编辑。我已经添加了你的名字作为信用卡。有一个问题是
$row=mysqli\u fetch\u assoc($sql)代码>如果我使用它,它将返回我表中的所有列,但是我想从对象中排除2列。如果有多行呢?哇!有那么简单吗?谢谢!既然所有列的名称都相同,为什么不直接使用mysqli_fetch_assoc()
跳过所有这些内容?@Nilpo感谢您的反馈/编辑。我已经添加了你的名字作为信用卡。有一个问题是$row=mysqli\u fetch\u assoc($sql)代码>如果我使用它,它将返回表中的所有列,但是有2列我想从对象中排除。