2016-08-14 114 views
1

我想從數據庫接收數據基於用戶輸入的名稱,一切工作正常我確實看到屏幕上的值,沒有錯誤這裏是PHP代碼:爲什麼我的json_encode沒有給出正確的值PHP

<?php 
$dbhost = "localhost"; 
$username = "root"; 
$password = ""; 
mysql_connect($dbhost,$username,$password); 
@mysql_select_db("trynew") or die(mysql_error()); 
$user ="mon"; 
$query = "SELECT * FROM trynewtable where name = '$user' "; 
$all_result = array(); 
$result = mysql_query($query); 
if($result==FALSE) 
{ 
    die(mysql_error()); 
} 
while($row = mysql_fetch_array($result)) 
{ 
$all_result[] = $row; 
} 
header('Content-Type: application/json'); 
$jsondata = json_encode($all_result);echo $jsondata; 
mysql_close(); 
?> 

但我對HTML DIV看到輸出是:

存儲在數據庫中
[{"0":"1","id":"1","1":"mon","Name":"mon","2":"26","Age":"26","3":"F","Gender":"F"}] 

實際數據是: 在數據庫中的實際數據

enter image description here

請讓我知道我做錯了什麼?

+0

你爲什麼要壓制錯誤?你爲什麼還在使用'mysql_'?你應該從MySQL [正式](http://php.net/manual/en/migration55.deprecated.php)棄用。使用[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)**與** [已準備好的語句]( http://php.net/manual/en/pdo.prepared-statements.php)。 – Script47

回答

5

您正在使用mysql_fetch_array(),它將返回數據庫中的數字鍵控和關聯數據數組。使用mysql_fetch_assoc()mysql_fetch_array()MYSQL_ASSOC作爲第二個參數來獲取關聯數組。

while($row = mysql_fetch_assoc($result)) 

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 

FYI,所述mysql_ API是deprecated並且是removed in PHP 7

+0

非常感謝...我的問題得到了解決...我將切換到mysqli,我是新來的PHP所以不知道關於mysqli – titlu

+0

你能讓我知道另一件事json_encode轉換爲對象的數組,但在javaScript代碼: 當我嘗試在屏幕上獲取整個對象時: 'jsonData = xhr.responseText; \t \t \t document.getElementById(「dvID」)。innerHTML = jsonData;'這很好,但是當我想訪問任何特定的值,如年齡 'jsonData = xhr.responseText; \t \t \t document.getElementById(「dvID」)。innerHTML = jsonData.age;' ,它給出了不確定的,你能告訴我爲什麼嗎? – titlu

+0

很難說沒有看到一個完整的例子。如果你無法解決問題,請提出一個新問題併發布格式正確的示例,我們都可以幫助您解決問題。 –

相關問題