Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

CodeIgniter Database Query menggunakan query() dengan klausa IN

Itu adalah perilaku yang benar. CI lolos dari kutipan sebelum mengirimnya ke MySQL. Anda mungkin harus menggunakan array untuk filter dan membuat sesuatu seperti ini (tidak diuji;) )

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

Anda juga harus sedikit menulis ulang kueri:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Fungsi LPAD() Bekerja di MySQL

  2. permintaan teks lengkap di joomla

  3. Menghubungkan MATLAB dan MySQL dengan Driver JDBC

  4. mysqldump membuang tabel sistem yang tidak diinginkan

  5. menggunakan php mysqli buat buku besar dan dapatkan saldo sesuai DR dan CR