Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah `json_encode()` mengembalikan NULL untuk medan pangkalan data MySQL, dan bagaimana saya boleh membetulkannya?

Mengapakah `json_encode()` mengembalikan NULL untuk medan pangkalan data MySQL, dan bagaimana saya boleh membetulkannya?

Patricia Arquette
Lepaskan: 2024-12-17 04:53:26
asal
1100 orang telah melayarinya

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

JSON_ENCODE Mengembalikan NULL untuk Medan Pangkalan Data

Semasa bekerja dengan MySQL dan PHP, anda mungkin menghadapi masalah di mana json_encode() mengembalikan NULL untuk medan dalam pangkalan data anda. Berikut ialah contoh khusus:

$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

Punca Berkemungkinan:

Selepas menyiasat skema pangkalan data anda dan output yang digemakan, kemungkinan besar anda sedang mendapatkan semula data dalam -UTF8 pengekodan.

Penyelesaian:

Untuk menyelesaikan isu ini, tambah baris berikut sebelum pertanyaan PILIH anda:

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

Arahan ini memastikan bahawa anda Sambungan MySQL menggunakan pengekodan UTF-8, yang diperlukan untuk json_encode() untuk mengendalikan aksara UTF-8 dengan betul dalam pangkalan data anda medan.

Kod Kemas Kini:

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

Output Jangkaan:

Sekarang, apabila anda menjalankan kod yang dikemas kini, anda harus mendapatkan output berikut, di mana medan "penerangan" mengandungi nilai bukan NULL:

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

Atas ialah kandungan terperinci Mengapakah `json_encode()` mengembalikan NULL untuk medan pangkalan data MySQL, dan bagaimana saya boleh membetulkannya?. 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