sql >> Database >  >> RDS >> Mysql

CodeIgniter Database Query met behulp van query() met IN-clausule

Dat is correct gedrag. CI ontsnapt aan aanhalingstekens voordat ze naar MySQL worden verzonden. Je zou waarschijnlijk een array voor het filter moeten gebruiken en zoiets als dit construeren (niet getest;) )

$filter = array('a','b','c');
$sql = "SELECT t1.*, t2.* 
     FROM Table1 t1 
     INNER JOIN Table2 t2 
         ON  t1.id = t2.id 
         AND t2.title IN (". implode(',', array_fill(0, count($filter), '?')).") 
         AND t1.type = ? 
     ORDER BY t1.id";
//edit: check if $filter is not an array ( when it is a single value string )
$filter = is_array( $filter ) ? $filter : array( $filter );
$q = $this->db->query( $sql, array_merge( $filter, array( $type ) ) );

Je moet de query ook een beetje herschrijven:

$sql = "SELECT t1.*, t2.* 
     FROM Table1 t1 
     INNER JOIN Table2 t2 
         ON  t1.id = t2.id 
     WHERE
         t2.title IN (". implode(',', array_fill(0, count($filter), '?')).") 
         AND t1.type = ? 
     ORDER BY t1.id";



  1. Rails SQL-query op onbekend (dynamisch) aantal query's met LIKE

  2. Mysql laten negeren waar voorwaarde

  3. Welk type tijdstempel moet ik kiezen in een PostgreSQL-database?

  4. Hoe kan ik SQL's YEAR(), MONTH() en DAY() in Doctrine2 gebruiken?