Apunhalar no escuro:algumas de suas linhas de banco de dados contêm caracteres não ASCII (por exemplo, ü, é e outros). Sua conexão com o banco de dados está definida como
latin1
, portanto, os dados não são codificados em UTF-8. json_encode
requer dados codificados em UTF-8. Se você buscar linhas suficientes, haverá linhas com esses dados não UTF-8 e json_encode
falha. Com poucas linhas suficientes, você não atinge essas linhas problemáticas. Teste isso produzindo
echo json_last_error_msg();
após json_encode
. Defina sua conexão de banco de dados como UTF-8. Veja aqui como fazer isso:UTF-8 até o fim
O motivo pelo qual seu navegador reclama de JSON inválido quando você inclui um
print_r
é simples:porque o PHP gera muito lixo que não é JSON, que o navegador não pode decodificar como JSON.