1) prepare и bind_param не нужно делать в цикле, можно один раз до цикла;
2) скорее всего, можно вообще не делать запрос в цикле, а получить все данные одним запросом. Нужно смотреть на структуру таблицы и данных в ней;
3) не понимаю, зачем закрывать подключение к БД, если вы его сразу используете дальше по коду. Кроме этого, вы неправильно его закрываете, close это метод, поэтому нужны скобки: ->close();
4) нет необходимости экранировать входящие параметры, если вы используете подготовленные запросы (prepared statement);
5) всё-таки лучше использовать json_encode а не собирать json вручную;
P.S. пожалуйста, используйте отступы (табуляцию) в коде, его будет намного удобнее читать и вам и тем, кто отвечает на вопрос.