In PHP il valore MySQL NULL va gestito attentamente quando si usa JSON.
Supponiamo di avere un campo di una tabella che ha come valore MySQL predefinito NULL
. Dato che questo valore è anche un valido valore JSON, la funzione json_encode()
lo converte nel valore corrispondente.
Tuttavia, a livello client il valore null
può generare errori in quelle proprietà degli oggetti in cui ci si aspetti un valore diverso come ad esempio una stringa:
$.get( "/ajax/posts", function( response ) {
if( response.items.length > 0 ) {
$.each( response.items, function( i, post ) {
var description = post.description; // Possibile null
if( description.length > 0 ) {
// Errore fatale! null non ha una proprietà length!
}
});
}
});
Quindi dobbiamo trattare questo valore in modo appropriato:
header('Content-Type', 'application/json');
$db = require_once('db.php');
$posts = $db->get('posts');
$output = [];
foreach($posts as $post) {
$output[] = [
title => $post['title'],
description => (!is_null($post['description'])) ? $post['description'] : ''
];
}
echo json_encode($output);
exit();