Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP PDO bindParam pour la variable/chaîne utilisée pour l'instruction IN... ?

Ce que deceze a dit dans les commentaires est correct. Voici une façon dont j'ai déjà fait cela.

Fondamentalement, vous créez le IN une partie de la chaîne sql en bouclant les valeurs du tableau et en ajoutant un nom lié.

$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
        )
    )
);

Cela se traduit par Select * from colors where type in ( :allow_0,:allow_1 )

Ensuite, bouclez simplement le $allow tableau et utilisez bindValue pour lier chaque variable.

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

J'ai ajouté ceci avant de réaliser que deceze était lié à une question qui donnait un exemple similaire. Je vais laisser ceci ici car il montre comment le faire avec des variables liées nommées et non ?s