1

我正在使用 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,我的查询将返回 10 个结果。我究竟做错了什么?

编辑:

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

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

我刚刚尝试使用 MySQL(带有类似查询)表使用 charset utf-8 和 Collat​​ion-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 并且什么都没有。

感谢您的时间。我究竟做错了什么?

4

1 回答 1

1

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

'dbcollat' => 'utf8_general_ci'

现在它起作用了:

'dbcollat' => ''

Firebird 的 Cyrillic 搜索问题是由数据库字符集“NONE”引起的。

于 2017-07-21T05:59:09.847 回答