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
Patricia Arquetteasal
2024-12-17 04:53:261002semak imbas

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

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!

Kenyataan:
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