Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es eine Speicherbegrenzung für die Methode json_encode()?

Stich ins Dunkel:Einige Ihrer Datenbankzeilen enthalten Nicht-ASCII-Zeichen (z. B. ü, é und dergleichen). Ihre Datenbankverbindung ist auf latin1 eingestellt , sodass die Daten nicht UTF-8-codiert sind. json_encode erfordert UTF-8-codierte Daten. Wenn Sie genügend Zeilen abrufen, gibt es dort Zeilen mit solchen Nicht-UTF-8-Daten und json_encode scheitert. Mit wenigen genug Zeilen treffen Sie diese problematischen Zeilen nicht.

Testen Sie dies, indem Sie echo json_last_error_msg(); ausgeben nach json_encode .

Stellen Sie Ihre Datenbankverbindung auf UTF-8 ein. Sehen Sie hier, wie das geht:UTF-8 komplett

Der Grund, warum sich Ihr Browser über ungültiges JSON beschwert, wenn Sie einen print_r einfügen ist einfach:weil PHP dann eine Menge Müll ausgibt, der kein JSON ist, den der Browser nicht als JSON decodieren kann.