Poignarder dans le noir :certaines de vos lignes de base de données contiennent des caractères non ASCII (par exemple, ü, é, etc.). Votre connexion à la base de données est définie sur latin1
, les données ne sont donc pas encodées en UTF-8. json_encode
nécessite des données encodées en UTF-8. Si vous récupérez suffisamment de lignes, il y aura des lignes contenant de telles données non UTF-8, et json_encode
échoue. Avec peu de lignes, vous n'atteignez pas ces lignes problématiques.
Testez ceci en sortant echo json_last_error_msg();
après json_encode
.
Définissez votre connexion à la base de données sur UTF-8. Voyez ici comment procéder :UTF-8 tout au long
La raison pour laquelle votre navigateur se plaint d'un JSON invalide lorsque vous incluez un print_r
est simple :parce que PHP génère alors beaucoup de déchets qui ne sont pas du JSON, que le navigateur ne peut pas décoder en JSON.