Задать вопрос
@dind

Можно ли передавать массив в этом запросе MySQL?

Есть такой запрос
$listings = $iaAuto->get(array('model_id' => '1670'), $pagination['start'], $pagination['limit'], $_SESSION[iaAuto::SESSION_SORTING_KEY]);

Можно ли передавать массив или данные через запятую вместо 1670?

Есть другой запрос
$listings = $iaDb->all(iaDb::ALL_COLUMNS_SELECTION, "`model_id` IN ({$parrentIds})", 0, 20, 'autos');

Который вытаскивает все что есть в $parrentIds (айдишки через запятую)

Можно ли в первом запросе как то использовать IN?

Или первый запрос как то пропускать через foreach и каким то образом сохранять все выведенные данные в одном $listings

foreach ($array as $key => $value)
{
$listings = $iaAuto->get(array('model_id' => $value), $pagination['start'], $pagination['limit'], $_SESSION[iaAuto::SESSION_SORTING_KEY]);
}

Но здесь каждый раз перезаписывается $listings
  • Вопрос задан
  • 2281 просмотр
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Если $parrentIds = [1, 2, 3];
массив, то
$listings = $iaDb->all(iaDb::ALL_COLUMNS_SELECTION, "`model_id` IN (". join( ', ', $parrentIds ) .")", 0, 20, 'autos');
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Здесь нет никакого запроса mysql, даже близко.
А есть какой-то самопальный винегрет, который собирает запрос из кусочков неизвестным читателю способом.

В любом случае, первое, что надо усвоить про составление запросов: ни одна переменная не должна попадать в запрос напрямую!

То есть, первый вариант делает весь этот самопальный винегрет (который, тем не менее, делает работу с БД безопасной) - бесполезным.

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

Полученный в результате массив скорее всего будет отличаться от ожидаемого, так что надо будет немного изменить логику его перебора
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽