sql >> Databasteknik >  >> RDS >> Mysql

PHP PDO bindParam för variabel/sträng som används för IN-sats...?

Det deceze sa i kommentarerna är korrekt. Här är ett sätt jag har gjort detta förut.

I grund och botten skapar du IN del av sql-strängen genom att slinga array-värdena och lägga till ett bundet namn.

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

Detta resulterar i Select * from colors where type in ( :allow_0,:allow_1 )

Sedan är det bara att loopa $allow array och använd bindValue för att binda varje variabel.

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

Jag lade till detta innan jag insåg att deceze länkade till en fråga som gav ett liknande exempel. Jag lämnar detta här eftersom det visar hur man gör det med namngivna bundna variabler och inte ?s



  1. SQL-fel:ORA-02291:integritetsbegränsning

  2. Oracle SQL pivotfråga

  3. Hur man skapar lagrad procedur i MySQL

  4. Väljer N rader i SQL Server