2016-08-01 9 views
1

Ich verwende den folgenden Code, um eine Verbindung zu meiner lokalen Datenbank herzustellen und Ergebnisse aus einer Tabelle abzufragen. Der folgende Code funktioniert nicht, um meine Ergebnisse in einem JSON-Format zu drucken. Gibt es etwas, das mir fehlt? Danke für Ihre Hilfe!Konvertieren von MySQL-Datenbankabfrage zu JSON in PHP

<?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_ Funktionen sind veraltet und sollten nicht mehr verwendet werden. Mit diesem gesagt, kann ich nicht sofort ein Problem mit dem Code sehen. Erhalten Sie überhaupt eine Ausgabe? Was gibt 'var_dump ($ rows);' geben? – rjdown

+0

Führen Sie dieses Skript in Ihrem Browser aus. Siehst du die JSON-Zeichenfolge auf der Seite ausgegeben? – RiggsFolly

Antwort

0

Korrektur: Ihr Kommentar zeigt Ihnen die codierte Array bekommen, aber Sie erhalten nicht als JSON, dieses Problem zu lösen Sie den Header gesetzt haben zuerst:

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

Es ist wichtig, dass Sie machen keine Ausgabe vor dem Aufruf der Header-Funktion. Eine leere Zeile innerhalb von PHP-Tags ist bereits eine Ausgabe (auch in den Includes).


Zweite Möglichkeit: einige der Zellen enthalten ungültige Zeichen und dann json_encode schlägt fehl.

+0

zeigen, die diesen Code einschließt, sowie mysql_set_charset ("UTF8", $ link); hat funktioniert! – Liz