Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „json_encode()' NULL für MySQL-Datenbankfelder zurück und wie kann ich das Problem beheben?

Warum gibt „json_encode()' NULL für MySQL-Datenbankfelder zurück und wie kann ich das Problem beheben?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-17 04:53:261002Durchsuche

Why does `json_encode()` return NULL for MySQL database fields, and how can I fix it?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn