Задать вопрос
SimBioT19
@SimBioT19
{{ user.about }}

Как сделать PDO + IN?

Как сделать запрос вида "UPDATE WHERE `id` IN ($sql)"
Нашёл кое-что, stackoverflow.com/questions/8991688/pdo-in-array-s...
но не ясно с bind`ом
Покажите пример!
У меня данный код не работает:
$query = $DB->prepare("UPDATE `Ttopic` SET `main`=:main, `main_id`=:theme,`type`='".$f['type']."' WHERE `id` IN ($q) limit 10");

$query->bindParam(':main', $main);
$query->bindParam(':theme', $theme);
if($query->execute($Ar)) echo 'ok';

По-моему с execute вообще неправильно
  • Вопрос задан
  • 7994 просмотра
Подписаться 5 Оценить Комментировать
Ответ пользователя Евгений Николаев К ответам на вопрос (4)
Я для данной цели написал класс, который работает следующим образом
$stmt = false;//Требуется объявить так как передаётся в метод execute по ссылке
$params = array("ids"=>array(1,4,7));
$sql = "SELECT * FROM `users` WHERE `id` IN (:ids)";
nikolaevevgePDOIn::execute($pdo,$sql,$params,$stmt);

Сам код класса выложен тут: https://blog.ivru.net/?id=270
P.S. в моём случаи для формирования отчёта требовалось выполнить сразу ряд запросов в которых предполагалась передача массива значений в конструкцию IN(и даже нескольких массивов в несколько конструкций IN), поэтому применение данного класса вполне оправдано.
Ответ написан
Комментировать