Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误的输出json_编码PHP_Php_Jquery_Json - Fatal编程技术网

错误的输出json_编码PHP

错误的输出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'

我正在使用这段代码构建一个数组并将其编码为JSON

   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列我想从对象中排除。