Bodnutí do tmy:některé řádky vaší databáze obsahují znaky jiné než ASCII (např. ü, é a podobně). Vaše připojení k databázi je nastaveno na latin1 , takže data nejsou kódována UTF-8. json_encode vyžaduje data v kódování UTF-8. Pokud načtete dostatek řádků, budou tam řádky s daty mimo UTF-8 a json_encode selže. S malým počtem řádků se stane, že se do těchto problematických řádků nedostanete.
Otestujte to zadáním echo json_last_error_msg(); za json_encode .
Nastavte připojení k databázi na UTF-8. Podívejte se, jak na to:UTF-8 až do konce
Důvod, proč si váš prohlížeč stěžuje na neplatný JSON, když zahrnete print_r je jednoduchý:protože pak PHP generuje spoustu odpadků, které nejsou JSON, které prohlížeč nemůže dekódovat jako JSON.