Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt meine Funktion „json_encode' NULL für das Beschreibungsfeld in meiner PHP-JSON-Antwort zurück?

Warum gibt meine Funktion „json_encode' NULL für das Beschreibungsfeld in meiner PHP-JSON-Antwort zurück?

Linda Hamilton
Linda HamiltonOriginal
2024-12-07 15:53:12265Durchsuche

Why is my `json_encode` function returning NULL for the description field in my PHP JSON response?

json_encode gibt Null für Beschreibungsfeld zurück

Problem:

Der folgende PHP-Code schlägt fehl Codieren Sie das Feld „Beschreibung“ in einer JSON-Antwort und geben Sie NULL zurück stattdessen.

include('db.php');

$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);

Datenbankschema:

CREATE TABLE `staff` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` longtext COLLATE utf8_unicode_ci,
  `description` longtext COLLATE utf8_unicode_ci,
  `icon` longtext COLLATE utf8_unicode_ci,
  `date` longtext COLLATE utf8_unicode_ci,
  `company` longtext COLLATE utf8_unicode_ci,
  `companyurl` longtext COLLATE utf8_unicode_ci,
  `appurl` longtext COLLATE utf8_unicode_ci,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

Ausgabe:

[{"id":"4","name":"Noter 2","description":null,"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":null,"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"}]

Lösung :

Die wahrscheinliche Ursache ist, dass die Daten mit a abgerufen werden Nicht-UTF8-Kodierung. Um dies zu beheben, fügen Sie die folgende Zeile vor der SELECT-Abfrage hinzu:

mysql_query('SET CHARACTER SET utf8');

Dadurch wird sichergestellt, dass die Daten in UTF8-Kodierung abgerufen werden, wodurch json_encode das Feld „Beschreibung“ korrekt kodieren kann.

Das obige ist der detaillierte Inhalt vonWarum gibt meine Funktion „json_encode' NULL für das Beschreibungsfeld in meiner PHP-JSON-Antwort zurück?. 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