2014-07-22 49 views
0

我用這個代碼我如何獲得一個數據庫表JSON在PHP

$dbhandle = mysql_connect("localhost","root","password") 
or die("Unable to connect to MySQL"); 

$arr; 

//select a database to work with 
$selected = mysql_select_db("info",$dbhandle) 
or die("Could not select examples"); 

$result = mysql_query("SELECT * FROM students"); 

while($row = mysql_fetch_array($result)) 
{ 
    $arr[]=$row; 
} 

它是一個表的所有數據存儲到一個二維數組,正確的方式。 我如何在Ajax中使用這個數組作爲json在HTML文件中顯示數據。

+2

是的,你最近的問題是什麼? –

+0

您可以做的另一件事是,您可以爲所有學生(通過某個主鍵)創建關聯數組,以便通過id有效地訪問學生。像'$ students [$ row ['stud_id']] = $ row;'...並且稍後訪問個別學生記錄,比如'$ students [101]' –

+0

我想在Ajax中使用這個數組作爲json來打印它在一個HTML頁面中。 我怎麼能? –

回答

1

正如你在評論中提到的那樣,你想要做ajax和json。

你可以做這樣的代碼(使用mysql_fetch_assoc()而不是陣列):

//set content type: text/json 
header("Content-Type: text/json"); 

$dbhandle = mysql_connect("localhost","root","password") or die("Unable to connect to MySQL"); 

//select a database to work with 
$selected = mysql_select_db("info",$dbhandle) or die("Could not select examples"); 

$result = mysql_query("SELECT * FROM students"); 

if(mysql_num_rows($result)>0){ 
    $rows=array(); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     $rows[]=$row; 
    } 
    echo json_encode(array("success"=>$rows)); 
}else{ 
    echo json_encode(array("error"=>"No records found.")); 
} 
exit; 

和AJAX(假定,jQuery.get() AJAX

$.get("script.php", function(data){ 
    if(data.success){ 
     //process each row 
     data.success.forEach(function(row){ 
      console.log(row); //access student row here, simply like row.student_name, row.city etc. 
     }); 
    }else{ 
     alert(data.error); 
    } 
}); 

Scurity注:

  1. mysql_* functions are deprecated and will be removed from support, so you should avoid using it。對於數據庫查詢,使用mysqli_*PDO
+0

謝謝 是的,它工作時,我使用數據爲這樣的二維數組 for(var i = 0; i

+0

歡迎您。那麼,你現在的疑問清楚了嗎? –

0

使用mysql_fetch_assoc,而不是mysql_fetch_array ...

while ($row = mysql_fetch_assoc($result)) { 
    $arr[]=$row; 
} 

檢查mysql_query文檔瞭解更多信息。但是,建議您使用PDO或MySQLi驅動程序,因爲從PHP 5.5.0起已棄用此驅動程序。

相關問題