Пробийте в тъмното:някои от редовете на вашата база данни съдържат знаци, които не са ASCII (например ü, é и други). Вашата връзка с базата данни е настроена на latin1 , така че данните не са кодирани с UTF-8. json_encode изисква UTF-8 кодирани данни. Ако извлечете достатъчно редове, там ще има редове с такива данни, различни от UTF-8, и json_encode не успява. С достатъчно малко реда ви се случва да не уцелите тези проблемни редове.
Тествайте това, като изведете echo json_last_error_msg(); след json_encode .
Задайте връзката на вашата база данни на UTF-8. Вижте тук как да го направите:UTF-8 докрай
Причината, поради която браузърът ви се оплаква от невалиден JSON, когато включите print_r е просто:защото тогава PHP извежда много боклук, който не е JSON, който браузърът не може да декодира като JSON.