首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Firebird和Codeigniter在Live中使用非拉丁字母的空"LIKE“查询

用Firebird和Codeigniter在Live中使用非拉丁字母的空"LIKE“查询
EN

Stack Overflow用户
提问于 2017-07-14 06:17:47
回答 1查看 238关注 0票数 1

我正在使用jQuery UI自动完成和CI 3.1.5进行实时搜索。它在MySQL中运行得很好,但是使用Firebird1.5,我有一个空数组。问题是在我喜欢的查询中。

这里是我的代码:

代码语言:javascript
复制
public function get_autocomplete($search_data)
{   
    $this->db1->select('NAME');
    $this->db1->like('NAME', $search_data);
    return $this->db1->get('CLIENTS', 10)->result();
}

我也试过这样做:

代码语言:javascript
复制
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与包含一起工作。此代码适用于英语:

代码语言:javascript
复制
$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,它用英语和西里尔语工作。那么问题是在代码点火器设置中的吗?

这里是我的数据库配置:

代码语言:javascript
复制
$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';

谢谢您抽时间见我。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-21 05:59:09

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

代码语言:javascript
复制
'dbcollat' => 'utf8_general_ci'

现在它起作用了:

代码语言:javascript
复制
'dbcollat' => ''

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45095962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档