我正在使用 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 和 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 并且什么都没有。
感谢您的时间。我究竟做错了什么?