Здесь нет никакого запроса mysql, даже близко.
А есть какой-то самопальный винегрет, который собирает запрос из кусочков неизвестным читателю способом.
В любом случае, первое, что надо усвоить про составление запросов:
ни одна переменная не должна попадать в запрос напрямую!
То есть, первый вариант делает весь этот самопальный винегрет (который, тем не менее, делает работу с БД безопасной) - бесполезным.
Поэтому, стоит использовать второй вариант, который, хоть и не оптимальный, но зато безопасный. А чтобы переменная не "затиралась" (а что ей еще остаётся делать, если её постоянно перезаписывают?), надо сделать её
массивом:
$listings = [];
foreach ($array as $key => $value)
{
$listings[] = $iaAuto->get(
array('model_id' => $value),
$pagination['start'],
$pagination['limit'],
$_SESSION[iaAuto::SESSION_SORTING_KEY]
);
}
Полученный в результате массив скорее всего будет отличаться от ожидаемого, так что надо будет немного изменить логику его перебора