2011-05-05 55 views
0

以前問過這個問題,但是我已經將這個問題縮小到了這一點代碼。這裏是我的代碼,當我運行它,它只是說「空」 ..如何爲json格式化Mysql/php數組?

$getmsg = "SELECT * FROM user WHERE account_id = $id";  
$showmsg = @mysqli_query ($dbc, $getmsg); 
     while ($row = mysqli_fetch_array($showmsg, MYSQLI_ASSOC)) { 

$arrResults = array($row['user_username']); 


} // END WHILE 


// Print them out, one per line 
echo json_encode($arrResults); 
+0

我想我在這裏找到了你以前放棄的問題,我們縮小了它:http://stackoverflow.com/questions/5902397/how-to-use-jquery-to-autocomplete-with-usernames-for-a- message-app/5902648這是黑幕。 – Beez 2011-05-05 19:16:20

回答

4

首先你已經把迴音只是相呼應,而不是大家的最後一個項目外循環和你不檢查如果您的查詢出現錯誤。

相反,這就足夠了:

$getmsg = "SELECT * FROM user WHERE account_id = $id";  
$result = @mysqli_query($dbc, $getmsg) or die("Error: " . mysql_error()); 
$result = mysql_fetch_assoc($result); 
echo json_encode($result); 

它放入一個ASSOC陣列的結果,然後將整個數組到JSON並打印其轉換。

+0

與作者的問題無關,但使用'@'是一種不好的風格,同時輸出mysql_error()並將MySQLi('mysqli_query()')與MySQL('mysql_error()')混合使用。 – binaryLV 2011-05-05 19:15:48

+0

我剛剛複製了他的代碼以進行概念驗證。 – rzetterberg 2011-05-05 19:18:31

1

你很可能遇到的問題是在你的賦值語句:

$ arrResults =陣列($行[ 'user_username']);

您應將其更改爲以下:

$ arrResults [] = $行[ 'user_username'];