Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah fungsi `json_encode` saya mengembalikan NULL untuk medan penerangan dalam respons JSON PHP saya?

Mengapakah fungsi `json_encode` saya mengembalikan NULL untuk medan penerangan dalam respons JSON PHP saya?

Linda Hamilton
Lepaskan: 2024-12-07 15:53:12
asal
362 orang telah melayarinya

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

json_encode Mengembalikan Null untuk Medan Penerangan

Masalah:

Kod PHP di bawah gagal mengekod medan "penerangan" dalam respons JSON, mengembalikan NULL sebaliknya.

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);
Salin selepas log masuk

Skema Pangkalan Data:

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
Salin selepas log masuk

Output:

[{"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"}]
Salin selepas log masuk

Penyelesaian :

Punca yang mungkin ialah data sedang diambil menggunakan pengekodan bukan UTF8. Untuk membetulkannya, tambah baris berikut sebelum pertanyaan PILIH:

mysql_query('SET CHARACTER SET utf8');
Salin selepas log masuk

Ini akan memastikan bahawa data diperoleh semula dalam pengekodan UTF8, yang akan membolehkan json_encode mengekod medan "penerangan" dengan betul.

Atas ialah kandungan terperinci Mengapakah fungsi `json_encode` saya mengembalikan NULL untuk medan penerangan dalam respons JSON PHP saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan