2016-03-02 155 views
1

我基本上试图调用一个MySQL查询并获取服务器的响应,我已经完成了它并且工作正常。现在我需要编码为一个JSON阵列响应(每行作为一个JSON对象,并将它们添加到一个JSON阵列)编码PHP MySQL对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); 
} 

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

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, array

它指出,这条线:

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

JSON对象,我需要在JSON阵列:

粗略这将是结构..

user 
{ 
    name: "john", 
    picture: "http://...." 
    details { 
      email: "[email protected]", 
      telephone: "3456..." 
    } 
} 

*表中的列名是一样的对象属性的名称(例如:名称,图片等)

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

编辑:

我需要的数组,因为我需要这个数组发送到JavaScript函数。所以我需要它在JSON数组格式

回答

0

是什么$分贝,如果是mysqli的连接资源,那么它会支持

IMO,

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

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

所以你可以使用

echo json_encode($sqlresp); 
+0

是的,它是连接资源。你可以在查询行之后显示剩余的代码吗? while循环等 – Dinuka

+0

'$ sqlresp = $ db-> query('SELECT * from mydb。UserTable'); if($ sqlresp) { $ rows = array(); ($ r = $ sqlresp-> fetch_assoc()){ $ rows ['users'] [] = $ r; } print json_encode($ rows); }' – Subash

+0

用于迭代'$ r = $ sqlresp-> fetch_assoc()' – Subash

0

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

$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在测试表用户):

{"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"} 
]} 
+0

这给了我这个错误:“警告:mysqli_fetch_assoc()预计参数1被mysqli_result,对象在给定的”,它指向while循环的代码行 – Dinuka