我正在使用jQuery UI自动完成和CI 3.1.5进行实时搜索。它在MySQL中运行得很好,但是使用Firebird1.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个结果。我做错了什么?
编辑:
火鸟1.5与包含一起工作。此代码适用于英语:
$query = $this->db1->query("select cl.name
from clients cl
where (cl.name containing '$search_data')"); 我刚刚尝试了使用MySQL (使用类似的查询)表,使用charset utf-8和Collation utf 8_general_ci和我有相同的问题--英语作品,Cyrillic不,我只是尝试使用纯php,它用英语和西里尔语工作。那么问题是在代码点火器设置中的吗?
这里是我的数据库配置:
$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,排序规则也用windows-1251和nothing更改了$config['charset'] = 'UTF-8';。
谢谢您抽时间见我。我做错了什么?
发布于 2017-07-21 05:59:09
我发现了问题。MySQL的问题在于这一行:
'dbcollat' => 'utf8_general_ci'现在它起作用了:
'dbcollat' => ''使用Cyrillic搜索的Firebird问题是由数据库字符集'NONE‘引起的。
https://stackoverflow.com/questions/45095962
复制相似问题