Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „json_encode()' NULL für MySQL-Datenbankfelder zurück und wie kann ich das Problem beheben?
JSON_ENCODE gibt NULL für Datenbankfelder zurück
Beim Arbeiten mit MySQL und PHP kann es zu einem Problem kommen, bei dem json_encode() für Felder NULL zurückgibt in Ihrer Datenbank. Hier ist ein konkretes Beispiel:
$result = mysql_query('SELECT * FROM `staff` ORDER BY `id` DESC LIMIT 2') or die(mysql_error()); $rows = array(); while($row = mysql_fetch_assoc($result)){ $rows[] = $row; } echo json_encode($rows);
Mögliche Ursache:
Nach der Untersuchung Ihres Datenbankschemas und der Echo-Ausgabe ist es wahrscheinlich, dass Sie Daten in einem nicht abgerufenen Zustand abrufen -UTF8 Kodierung.
Lösung:
Um dieses Problem zu beheben, fügen Sie die folgende Zeile vor Ihrer SELECT-Abfrage hinzu:
mysql_query('SET CHARACTER SET utf8');
Dieser Befehl stellt sicher, dass Ihre Die MySQL-Verbindung verwendet die UTF-8-Kodierung, die für json_encode() erforderlich ist, um UTF-8-Zeichen in Ihrer Datenbank ordnungsgemäß zu verarbeiten Felder.
Aktualisierter Code:
mysql_query('SET CHARACTER SET utf8'); $result = mysql_query('SELECT * FROM `staff` ORDER BY `id` DESC LIMIT 2') or die(mysql_error()); $rows = array(); while($row = mysql_fetch_assoc($result)){ $rows[] = $row; } echo json_encode($rows);
Erwartete Ausgabe:
Wenn Sie jetzt den aktualisierten Code ausführen, Sie sollten die folgende Ausgabe erhalten, wobei das Feld „Beschreibung“ Nicht-NULL-Werte enthält:
[{"id":"4","name":"Noter 2","description":"Description of Noter 2","icon":"http:\/\/images.apple.com\/webapps\/productivity\/images\/noter2_20091223182720-thumb.jpg","date":"1262032317","company":"dBelement, LLC","companyurl":"http:\/\/dbelement.com\/","appurl":"http:\/\/noter2.dbelement.com"},{"id":"3","name":"Noter 2","description":"Description of Noter 2","icon":"http:\/\/images.apple.com\/webapps\/productivity\/images\/noter2_20091223182720-thumb.jpg","date":"1262032317","company":"dBelement, LLC","companyurl":"http:\/\/dbelement.com\/","appurl":"http:\/\/noter2.dbelement.com"}]
Das obige ist der detaillierte Inhalt vonWarum gibt „json_encode()' NULL für MySQL-Datenbankfelder zurück und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!