Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `json_encode()` mengembalikan NULL untuk medan pangkalan data MySQL, dan bagaimana saya boleh membetulkannya?
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);
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');
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);
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"}]
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!