Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP PDO bindParam para variável/string usado para instrução IN...?


O que deceze disse nos comentários está correto. Aqui está uma maneira que eu fiz isso antes.

Basicamente você cria o IN parte da string sql fazendo um loop dos valores da matriz e adicionando um nome vinculado.
$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
        )
    )
);

Isso resulta em Select * from colors where type in ( :allow_0,:allow_1 )

Em seguida, basta fazer um loop $allow array e use bindValue para vincular cada variável.
foreach( $allow as $k => $v ){
    $stmnt->bindValue( 'allow_'.$k, $v );
}

Eu adicionei isso antes de perceber o deceze vinculado a uma pergunta que dava um exemplo semelhante. Vou deixar isso aqui porque mostra como fazer isso com variáveis ​​vinculadas nomeadas e não ?s