sql >> Databáze >  >> RDS >> Mysql

CodeIgniter Database Query pomocí query() s klauzulí IN

To je správné chování. CI uvozovky před odesláním do MySQL uvozuje. Pravděpodobně byste měli použít pole pro filtr a vytvořit něco takového (netestováno;) )

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

Měli byste také trochu přepsat dotaz:

$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. chyba:ALTER TYPE ... ADD nelze spustit uvnitř bloku transakce

  2. Jak uložit obrázek do sloupce databázových tabulek SQL Server

  3. Zkrátit všechny tabulky v databázi MySQL jedním příkazem?

  4. existuje alternativa k použití cyklu for pro vložení více dotazů