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

PHP PDO bindParam for variabel/streng brugt til IN-sætning...?

Det, deceze sagde i kommentarerne, er korrekt. Her er en måde, jeg har gjort dette før.

Grundlæggende opretter du IN del af sql-strengen ved at sløjfe matrixværdierne og tilføje et bundet navn.

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

Dette resulterer i Select * from colors where type in ( :allow_0,:allow_1 )

Derefter skal du bare sløjfe $allow array og brug bindValue til at binde hver variabel.

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

Jeg tilføjede dette, før jeg opdagede, at deceze var knyttet til et spørgsmål, der gav et lignende eksempel. Jeg vil efterlade dette her, fordi det viser, hvordan man gør det med navngivne bundede variabler og ikke ?s



  1. Vælg ulåst række i Postgresql

  2. gem numpy array i mysql

  3. Lej eller bliv ansat:En datamodel for rekrutteringsprocessen

  4. Hvordan finder jeg det mest almindelige resultat i en kolonne i min MySQL-tabel