2017-07-14 5 views
0

Ich arbeite an Live-Suche mit jQuery UI Autocomplete und CI 3.1.5. Es funktioniert gut mit MySQL, aber mit Firebird 1.5 habe ich ein leeres Array. Das Problem ist in meiner Like-Abfrage.Empty "LIKE" Abfrage mit nicht-lateinischen Buchstaben in Live Search mit Firebird und Codeigniter

Hier ist mein Code:

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

Ich habe auch versucht dies:

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(); 
} 

Das Ergebnis ist wieder ein leeres Array. Wenn ich LIKE nicht verwende, gibt meine Abfrage 10 Ergebnisse in Ordnung zurück. Was mache ich falsch?

Edit:

Firebird 1.5 arbeitet mit enthalten. Dieser Code funktioniert mit Englisch:

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

ich gerade versucht, mit MySQL (mit wie Abfrage) Tabelle ist mit charset utf-8 und Sortierungs-utf8_general_ci und ich habe das gleiche Problem - Englisch funktioniert, Kyrillisch nicht. Ich habe gerade mit reinem PHP versucht und es funktioniert in Englisch und Kyrillisch. Also das Problem ist in Codeigniter Einstellungen?

Hier ist meine Datenbankkonfigurationen:

$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 
); 

Ich habe versucht, zu ändern char_set und Sortierungs auch $config['charset'] = 'UTF-8'; mit Windows-1251 und nichts geändert.

Vielen Dank für Ihre Zeit. Was mache ich falsch?

+0

Kommentare sind nicht für längere Diskussion; Diese Konversation wurde [in den Chat verschoben] (http://chat.stackoverflow.com/rooms/149653/discussion-on-question-by-pa4o-empty-like-query-with-non-latin-letters-in- Leben). – meagar

Antwort

0

Ich habe das Problem gefunden. Das Problem mit MySQL war diese Linie:

'dbcollat' => 'utf8_general_ci' 

Jetzt funktioniert es:

'dbcollat' => '' 

Das Problem mit Firebird mit kyrillischer Suche durch die Datenbank charset 'NONE' verursacht wird.