PHP PDO bindParam для переменной / строки, используемой для инструкции «IN» …?

Возможный дубликат:
PHP PDO: Можно ли привязать массив к условию IN ()?

Хорошо, это действительно беспокоит меня. Как я могу привязать paramater (который имеет несколько значений) для SQL "IN" statment в PDO PHP?

Вот основные сведения …

$allow = "'red', 'blue'"; SELECT * FROM colors WHERE type IN (:allow); $stmt->bindParam(':allow', $allow); 

Это отлично работает, когда я подключаю $ allow самостоятельно, но при попытке связать его и использовать: разрешить ему работать. Кто-нибудь знает, почему это?

Примечание. У меня есть остальная часть PDO, правильно настроенная с использованием других переменных (не строк), я просто не включил ее, потому что это не нужно.

Любая помощь приветствуется, спасибо.

То, что говорится в комментариях, является правильным. Вот как я это делал раньше.

В основном вы создаете IN часть строки sql, зацикливая значения массива и добавляя имя с привязкой.

 $allow = array( 'red', 'blue' ); $sql = sprintf( "Select * from colors where type in ( %s )", implode( ',', array_map( function($v) { static $x=0; return ':allow_'.$x++; }, $allow ) ) ); 

Это приводит к Select * from colors where type in ( :allow_0,:allow_1 )

Затем просто зациклируйте массив $allow и используйте bindValue для привязки каждой переменной.

 foreach( $allow as $k => $v ){ $stmnt->bindValue( 'allow_'.$k, $v ); } 

Я добавил это, прежде чем осознать, что уделено совпадение с вопросом, который дал аналогичный пример. Я оставляю это здесь, потому что он показывает, как это сделать с помощью имен связанных переменных и не?

Функции связывания будут рассматривать весь список как строку, а не несколько дискретных значений.