对JSON问题的PHP MySQL查询响应进行编码

对JSON问题的PHP MySQL查询响应进行编码,php,mysql,json,google-app-engine,Php,Mysql,Json,Google App Engine,我基本上是在尝试调用一个MySQL查询并从服务器获取响应,我已经完成了这项工作,并且可以正常工作。现在我需要将响应编码为一个JSON数组(每行作为一个JSON对象,并将它们添加到一个JSON数组中) 我的代码: foreach ($db->query('SELECT * from mydb.UserTable') as $sqlresp) { $rows = array(); while($r = mysqli_fetch_assoc($sqlresp))

我基本上是在尝试调用一个MySQL查询并从服务器获取响应,我已经完成了这项工作,并且可以正常工作。现在我需要将响应编码为一个JSON数组(每行作为一个JSON对象,并将它们添加到一个JSON数组中)

我的代码:

foreach ($db->query('SELECT * from mydb.UserTable') as $sqlresp) {
        $rows = array();
        while($r = mysqli_fetch_assoc($sqlresp)) {
              $rows['users'][] = $r;
        }
        print json_encode($rows);
}
while($r = mysqli_fetch_assoc($sqlresp)) {
上面的代码给了我这个错误:

foreach ($db->query('SELECT * from mydb.UserTable') as $sqlresp) {
        $rows = array();
        while($r = mysqli_fetch_assoc($sqlresp)) {
              $rows['users'][] = $r;
        }
        print json_encode($rows);
}
while($r = mysqli_fetch_assoc($sqlresp)) {
警告:mysqli_fetch_assoc()预期参数1为mysqli_结果, 排列

它指向这一行:

foreach ($db->query('SELECT * from mydb.UserTable') as $sqlresp) {
        $rows = array();
        while($r = mysqli_fetch_assoc($sqlresp)) {
              $rows['users'][] = $r;
        }
        print json_encode($rows);
}
while($r = mysqli_fetch_assoc($sqlresp)) {
JSON数组中我需要的JSON对象:

foreach ($db->query('SELECT * from mydb.UserTable') as $sqlresp) {
        $rows = array();
        while($r = mysqli_fetch_assoc($sqlresp)) {
              $rows['users'][] = $r;
        }
        print json_encode($rows);
}
while($r = mysqli_fetch_assoc($sqlresp)) {
大致上这就是结构

user
{
     name: "john",
     picture: "http://...."
     details {
          email: "email@gmail.com",
          telephone: "3456..."
     }
}
*表的列名与对象属性名相同(例如:名称、图片等)

伙计们,我的代码有什么问题?我如何正确地将查询响应的行编码为JSON数组

编辑:

foreach ($db->query('SELECT * from mydb.UserTable') as $sqlresp) {
        $rows = array();
        while($r = mysqli_fetch_assoc($sqlresp)) {
              $rows['users'][] = $r;
        }
        print json_encode($rows);
}
while($r = mysqli_fetch_assoc($sqlresp)) {

我需要数组,因为我需要将此数组发送到Javascript函数。因此,我需要JSON数组格式的查询,我建议将查询放在这样的循环中会导致问题,也许像这样更传统的方法会有所帮助

$sqlresp=$db->query('SELECT * from mydb.UserTable');
if( $sqlresp ){

    $rows = array();

    while( $r = mysqli_fetch_assoc( $sqlresp ) ) {
          $rows['users'][] = $r;
    }
    print json_encode( $rows );
}
下面的内容对我很有用,所以可能与您的db连接对象有关

$dbhost =   'localhost';
$dbuser =   'root'; 
$dbpwd  =   'xxx'; 
$dbname =   'experiments';

$db =   new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );

$result=$db->query('select * from `users` limit 10');
if( $result ){

    $rows=array();
    while( $rs = mysqli_fetch_assoc( $result ) ){
        $rows['users'][]=$rs;
    }

    print json_encode( $rows );
}
输出(测试表中只有3个用户):


我建议将查询放在这样一个循环中会导致问题,也许像这样一种更传统的方法会有所帮助

$sqlresp=$db->query('SELECT * from mydb.UserTable');
if( $sqlresp ){

    $rows = array();

    while( $r = mysqli_fetch_assoc( $sqlresp ) ) {
          $rows['users'][] = $r;
    }
    print json_encode( $rows );
}
下面的内容对我很有用,所以可能与您的db连接对象有关

$dbhost =   'localhost';
$dbuser =   'root'; 
$dbpwd  =   'xxx'; 
$dbname =   'experiments';

$db =   new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );

$result=$db->query('select * from `users` limit 10');
if( $result ){

    $rows=array();
    while( $rs = mysqli_fetch_assoc( $result ) ){
        $rows['users'][]=$rs;
    }

    print json_encode( $rows );
}
输出(测试表中只有3个用户):


什么是$db,如果它是mysqli连接资源,那么它将支持

国际海事组织

它是自定义库,返回数组

所以你可以用

echo json_encode( $sqlresp );

什么是$db,如果它是mysqli连接资源,那么它将支持

国际海事组织

它是自定义库,返回数组

所以你可以用

echo json_encode( $sqlresp );

这给了我一个错误:“警告:mysqli_fetch_assoc()希望参数1是mysqli_结果,对象在中给定”并且它指向while循环的代码行这给了我一个错误:“警告:mysqli_fetch_assoc()希望参数1是mysqli_结果,对象在中给定”它指向while循环的代码行是的,它是连接资源。您能在查询行之后显示其余代码吗?while循环,etc
$sqlresp=$db->query('SELECT*from mydb.UserTable');如果($sqlresp){$rows=array();而($r=$sqlresp->fetch_assoc()){$rows['users'][=$r;}打印json_encode($rows);}
将其用于迭代
$r=$sqlresp->fetch_assoc()
是,这是连接资源。您能在查询行之后显示其余代码吗?while循环,etc
$sqlresp=$db->query('SELECT*from mydb.UserTable');如果($sqlresp){$rows=array();而($r=$sqlresp->fetch_assoc()){$rows['users'][=$r;}打印json_encode($rows);}
将其用于迭代
$r=$sqlresp->fetch_assoc()