在使用 Firebird 和 Codeigniter 的实时搜索中使用非拉丁字母的空 "LIKE" 查询

Empty "LIKE" query with non-Latin letters in Live Search with Firebird and Codeigniter

我正在使用 jQuery UI 自动完成和 CI 3.1.5 进行实时搜索。它适用于 MySQL,但对于 Firebird 1.5 我有一个空数组。问题出在我喜欢的查询中。

这是我的代码:

public function get_autocomplete($search_data)
{   
    $this->db1->select('NAME');
    $this->db1->like('NAME', $search_data);
    return $this->db1->get('CLIENTS', 10)->result();
}

我也试过这个:

public function get_autocomplete($search_data)
{   

        $query = $this->db1->query("select cl.name
            from clients cl
            where cl.name like '%$search_data%'");

         return $query->result();
}

结果又是一个空数组。如果我不使用 LIKE,我的查询 returns 10 结果很好。我做错了什么?

编辑:

Firebird 1.5 与包含一起使用。此代码适用于英语:

$query = $this->db1->query("select cl.name
    from clients cl
    where (cl.name containing  '$search_data')");   

我刚刚尝试使用 MySQL(类似查询)table 使用字符集 utf-8 和 Collation-utf8_general_ci 我遇到了同样的问题 - 英语有效,西里尔字母无效.我刚刚尝试使用纯 php,它适用于英语和西里尔文。所以问题Codeigniter设置

这是我的数据库配置:

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
   'dsn'   => '',
   'hostname' => '*****',
   'username' => '****',
   'password' => '',
   'database' => 'bulvestprint_mysql',
   'dbdriver' => 'mysqli',
   'dbprefix' => '',
   'pconnect' => FALSE,
   'db_debug' => TRUE,
   'cache_on' => FALSE,
   'cachedir' => '',
   'char_set' => 'utf8',
   'dbcollat' => 'utf8_general_ci',
   'swap_pre' => '',
   'encrypt' => FALSE,
   'compress' => FALSE,
   'stricton' => FALSE,
   'failover' => array(),
   'save_queries' => TRUE
 );

$db['firebird'] = array(
    'dsn'      =>  '',
    'hostname' => 'LOCALHOST',
    'username' => '******',
    'password' => '******',
    'database' => 'D:\Firebird_1_5\BULVEST_SPAS.GDB',
    'dbdriver' => 'ibase',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'WIN1251', //беше NONE
    'dbcollat' => 'PXW_CYRL', //беше празно
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

我尝试更改 char_set 并且整理也将 $config['charset'] = 'UTF-8'; 更改为 windows-1251,但什么也没有。

感谢您的宝贵时间。我做错了什么?

我发现了问题。 MySQL 的问题是这一行:

'dbcollat' => 'utf8_general_ci'

现在可以使用了:

'dbcollat' => ''

使用 Cyrillic 搜索的 Firebird 问题是由数据库字符集 'NONE' 引起的。