Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP PDO bindParam за променлива/низ, използван за IN израз...?

Това, което deceze каза в коментарите, е вярно. Ето начин, по който съм правил това преди.

По принцип вие създавате IN част от sql низа чрез цикъл на стойностите на масива и добавяне на обвързано име.

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

Това води до Select * from colors where type in ( :allow_0,:allow_1 )

След това просто завъртете $allow масив и използвайте bindValue, за да свържете всяка променлива.

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

Добавих това, преди да осъзная deceze, свързан с въпрос, който даде подобен пример. Ще оставя това тук, защото показва как да го направите с наименувани обвързани променливи, а не с ?s



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разбера дали заявка за MySQL UPDATE е неуспешна, защото предоставената информация съвпада с данни, които вече са в базата данни?

  2. Изберете брой / дубликати

  3. MySQL - стойност по подразбиране за TIMESTAMP(3)

  4. Случаен ПЪРВИЧЕН КЛЮЧ за Innodb

  5. Yii2 Как да изпълним групирането на условия къде И или ИЛИ?