2016-08-01 82 views
1

我正在使用以下代碼連接到本地數據庫並從表中查詢結果。以下代碼無法以JSON格式打印我的結果。有什麼我失蹤?謝謝你的幫助!將mySQL數據庫查詢轉換爲PHP中的JSON

<?php 

if (!$link = mysql_connect('localhost', 'root', 'root')) { 
echo 'Could not connect to mysql'; 
exit; 
} 

if (!mysql_select_db('tm-charts', $link)) { 
echo 'Could not select database'; 
exit; 
} 

$sql = 'SELECT Name,status FROM Estimates'; 
$result = mysql_query($sql, $link); 

if (!$result) { 
echo "DB Error, could not query the database\n"; 
echo 'MySQL Error: ' . mysql_error(); 
exit; 
} 

$rows = array(); 

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

echo json_encode($rows); 

?> 
+0

http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1 – AbraCadaver

+4

mysql_函數已被棄用,不應再使用。據說,我不能立即看到代碼的問題。你有沒有得到任何輸出? var_dump($ rows);'給了什麼? – rjdown

+0

從瀏覽器運行此腳本。你在頁面輸出中看到JSON字符串嗎? – RiggsFolly

回答

0

更正:您的評論表示您所得到的編碼陣列,但是您沒有收到它作爲JSON,要解決這個問題,你必須首先設置標題:

header('Content-Type: application/json; charset=utf-8'); 

重要的是,在調用標題函數之前,您沒有輸出。不在PHP標籤內的空行已經是一個輸出(也在包含中)。


第二種可能性:某些單元格包含非法字符,然後 json_encode失敗。

+0

包括該代碼以及使用:mysql_set_charset(「UTF8」,$ link);成功了! – Liz