Php 我的代码只将最后一行写入JSON

Php 我的代码只将最后一行写入JSON,php,mysql,json,Php,Mysql,Json,此代码仅将最后一行转换为json <?php $mysql_db_hostname = "localhost"; $mysql_db_user = "db_user"; $mysql_db_password = "db_password"; $mysql_db_database = "db_name"; $con = @mysqli_connect($mysql_db_hostname, $mysql_db_user, $mysql_db_password, $mysql_db_da

此代码仅将最后一行转换为json

<?php
$mysql_db_hostname = "localhost";
$mysql_db_user = "db_user";
$mysql_db_password = "db_password";
$mysql_db_database = "db_name";


$con = @mysqli_connect($mysql_db_hostname, $mysql_db_user, $mysql_db_password,
 $mysql_db_database);

if (!$con) {
 trigger_error('Could not connect to MySQL: ' . mysqli_connect_error());
}
$var = array();
 $sql = "SELECT id,name FROM db_table";
$result = mysqli_query($con, $sql);

while($obj = mysqli_fetch_object($result)) {
$var = $obj;
}
echo '{"users":'.json_encode($var).'}';
?>

我可以请求帮助更正代码中的错误吗?

将其替换为:

while($obj = mysqli_fetch_object($result)) {
    $var[] = $obj;
}
$data = ['users' => $var];
echo json_encode($data);

这将使$var成为对象数组,否则将覆盖$var值。

$var
之后使用数组符号
[]

$var = array();
  while($obj = mysqli_fetch_object($result)) {
  $var[]  = $obj;
}

使用$var[],而不是$var[]。。因为json_encode的参数应该是arrayWARNING:使用
@
运算符调用方法时,不要抑制错误。如果出现问题,您希望了解它,并需要采取纠正措施,为用户显示有用的消息,记录问题,或所有这些等等。如果忽略可能会提醒您出现问题的错误,这也会使调试问题变得更加复杂。您还应该使用
json_encode
对整个json对象进行编码,而不仅仅是部分:
json_encode(array('users'=>$var))
。提出建议后,json中没有任何内容,根本没有记录。您的查询是否返回任何数据?您也可以尝试在while中转储$obj。下面是转储数组(1){[“users”]=>array(2){[0]=>object(stdClass){[3(2){[“id”]=>string(1)“1”[“name”]=>string(13)“parshotamlal”}[1]=>object(stdClass){[4(2){[“id”]=>string(1)”2”{“name”=>string(14)“M.Irfan”}用户:{“id”]:{:“M.Irfan Shafiq”}]}所以json_编码应该可以工作。
echo json_encode($data)的输出是什么?该表有316行,为了向您展示dump,我运行了限制为2的sql,它运行得很好,但当我再次删除限制时,它没有给出任何内容:(在进行建议的更改后,json中没有任何内容,根本没有记录。请尝试var_dump($obj);在while循环内,并让我知道您的查询是否返回数据。同时检查while循环后。