Пробийте в тъмното:някои от редовете на вашата база данни съдържат знаци, които не са 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.