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.