sql >> Database >  >> RDS >> Mysql

PHP PDO bindParam voor variabele/tekenreeks gebruikt voor IN-instructie...?

Wat deceze zei in de commentaren klopt. Hier is een manier waarop ik dit eerder heb gedaan.

In principe creëer je de IN deel van de sql-tekenreeks door de arraywaarden in een lus te plaatsen en een gebonden naam toe te voegen.

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

Dit resulteert in Select * from colors where type in ( :allow_0,:allow_1 )

Loop dan gewoon de $allow array en gebruik bindValue om elke variabele te binden.

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

Ik heb dit toegevoegd voordat ik me realiseerde dat deceze gekoppeld was aan een vraag die een soortgelijk voorbeeld gaf. Ik zal dit hier laten omdat het laat zien hoe het moet met benoemde gebonden variabelen en niet met ?s



  1. Wat is de standaardgrootte van een varchar2-invoer naar de opgeslagen procedure van Oracle en kan deze worden gewijzigd?

  2. CSV exporteren/importeren met PHPExcel

  3. PHP MYSQL dynamische selectiebox

  4. LEAST() Functie in Oracle