sql >> データベース >  >> RDS >> Mysql

IN句でquery()を使用するCodeIgniterデータベースクエリ

    それは正しい振る舞いです。 CIは、引用符をMySQLに送信する前にエスケープします。おそらく、フィルターに配列を使用して、次のようなものを作成する必要があります(テストされていません;))

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

    また、クエリを少し書き直す必要があります:

    $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. Windows上のTalendをODBCデータベースに接続する

    2. V $ SQL_SHARED_CURSOR TOP_LEVEL_RPI_CURSOR

    3. 合計、平均、最大、最小、NULL値の数

    4. 外部キー制約の条件付きCASCADE操作?