2016-03-02 152 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