Mysql
 sql >> Database >  >> RDS >> Mysql

PHP PDO bindParam per variabile/stringa usata per l'istruzione IN...?

Ciò che Deceze ha detto nei commenti è corretto. Ecco un modo in cui l'ho fatto prima.

Fondamentalmente crei il IN parte della stringa sql eseguendo il ciclo dei valori dell'array e aggiungendo un nome associato.

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

Ciò si traduce in Select * from colors where type in ( :allow_0,:allow_1 )

Quindi esegui il ciclo di $allow array e usa bindValue per associare ogni variabile.

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

L'ho aggiunto prima di rendermi conto di deceze legato a una domanda che dava un esempio simile. Lo lascerò qui perché mostra come farlo con variabili associate denominate e non ?s