Mysql
 sql >> Base de données >  >> RDS >> Mysql

Existe-t-il une limite de mémoire pour la méthode json_encode() ?

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.