kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer

Как при использовании PDO привязать массив значений в условие IN?

<?php
$ids=array(1,2,3,7,8,9);
$db = new PDO(...);
$stmt = $db->prepare(
    'SELECT *
     FROM table
     WHERE id IN(:an_array)'
);
$stmt->bindParam('an_array',$ids);
$stmt->execute();
?>


Очень не хочется делать implode(..., $ids) - придется возиться с кавычками и весь профит от подготовки запроса по сути пропадает :(
  • Вопрос задан
  • 337 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Классическое решение:

<?php
$ids=array(1,2,3,7,8,9);
$in  = str_repeat('?,', count($arr) - 1) . '?';
$stmt = $db->prepare('SELECT * FROM table  WHERE id IN($in)');
$stmt->execute($ids);
Не слишком красиво, но зато безопасно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
eudj1n
@eudj1n
К сожалению никак, придется преобразовать массив в строку.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вместо IN можно использовать FIND_IN_SET, но не будут работать индексы.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы