【问题标题】:Encoding PHP MySQL Query Response to JSON Issue将 PHP MySQL 查询响应编码为 JSON 问题
【发布时间】:2016-03-02 08:43:54
【问题描述】:

我基本上是在尝试调用 MySQL Query 并从服务器获取响应,我已经完成并且它可以工作。现在我需要将响应编码为 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);
}

上面的代码给了我这个错误:

警告:mysqli_fetch_assoc() 期望参数 1 为 mysqli_result, 数组

它指向这条线:

while($r = mysqli_fetch_assoc($sqlresp)) {

JSON 数组中我需要的 JSON 对象:

大概就是这样的结构..

user
{
     name: "john",
     picture: "http://...."
     details {
          email: "email@gmail.com",
          telephone: "3456..."
     }
}

*表格的列名与对象属性名相同(例如:名称、图片等)

各位,我的代码出了什么问题,如何正确地将查询响应的行编码为 JSON 数组?

编辑:

我需要数组,因为我需要将此数组发送到 Javascript 函数。所以我需要它的 JSON 数组格式

【问题讨论】:

    标签: php mysql json google-app-engine


    【解决方案1】:

    什么是$db,如果是mysqli连接资源,则支持

    国际海事组织,

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

    它是自定义库,它返回数组

    所以你可以使用

    echo json_encode( $sqlresp );
    

    【讨论】:

    • 是的,它是连接资源。您可以在查询行之后显示其余代码吗? while 循环等
    • $sqlresp = $db->query('SELECT * from mydb.UserTable') ; if($sqlresp) { $rows = array(); while($r = $sqlresp->fetch_assoc()) { $rows['users'][] = $r; } print json_encode($rows); }
    • 将其用于迭代$r = $sqlresp->fetch_assoc()
    【解决方案2】:

    我建议在这样的循环中进行查询会导致问题,也许像这样更传统的方法可能会有所帮助?

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

    以下内容对我有用,所以可能与您的数据库连接对象有关?

    $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 个用户):

    {"users":[
    {"id":"1","user":"Tom","role":"3","UserID":"65f185ec6bd47af8f082f8196d0b4d24","Username":"tommy","Password":"knickers"},
    {"id":"2","user":"Joe","role":"3","UserID":"d6ba0682d75eb986237fb6b594f8a31f","Username":"joey","Password":"knockers"},
    {"id":"3","user":"Fred","role":"3","UserID":"eda56def9e82a3936a75aff3f4e66330","Username":"freddy","Password":"knackers"}
    ]}
    

    【讨论】:

    • 这给了我这个错误:“警告:mysqli_fetch_assoc() 期望参数 1 是 mysqli_result, object given in”并且它指向 while 循环的代码行
    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多