Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn cơ sở dữ liệu CodeIgniter sử dụng truy vấn () với mệnh đề IN

Đó là hành vi đúng. CI thoát khỏi các trích dẫn trước khi gửi chúng đến MySQL. Bạn có thể nên sử dụng một mảng cho bộ lọc và xây dựng một cái gì đó như thế này (không được kiểm tra;))

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

Bạn cũng nên viết lại truy vấn một chút:

$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. Nơi lưu trữ thông tin đăng nhập cơ sở dữ liệu một cách an toàn trong một trang web PHP

  2. Tạo một liên kết tượng trưng cho thư viện libmysqlclient.18.dylib

  3. định tuyến động mã đánh lửa

  4. Cách tự động hoàn thành một số bảng với DBEdit

  5. Đo điểm chuẩn hiệu suất của MySQL:MySQL 5.7 so với MySQL 8.0