Запрос PDO MySQL (MariaDB) со столбцом UTF8 не чувствителен к регистру, хотя используется сортировка по умолчанию

0

У меня есть такой запрос с именем UTF8:

select column from table where name = 'something'

Когда я пытаюсь это сделать с моего клиента mysql (HeidiSQL), результат возвращается, даже если есть разница между именем и чем-то другим. Это хорошо.

Допустим, когда я запускаю тот же запрос из PHP с PDO, тогда по какой-либо причине запрос чувствителен к регистру.

В таблице используется сортировка по умолчанию utf8_general_ci, а в соединении PDO я устанавливаю только charset = utf8.

Должна ли тогда сортировка по умолчанию для соединения PDO также нечувствительна к регистру?

  • 0
    Какую часть вы имеете в виду, что регистр является отправным?
  • 0
    Запрос. Как будто он возвращает результат для name = 'Something', но не для name = 'кое-что'. От клиента sql оба запроса работают, от PDO - только тот, который соответствует правильному регистру, хотя для UTF8 сортировка по умолчанию применяется по умолчанию.
Показать ещё 4 комментария
Теги:
mariadb
utf-8
pdo

1 ответ

0

Из PHP я напечатал переменные сортировки:

show variables where variable_name like '%coll%';

и он сказал:

array(3) {
  [0]=>
  array(2) {
    ["Variable_name"]=>
    string(20) "collation_connection"
    ["Value"]=>
    string(15) "utf8_general_ci"
  }
  [1]=>
  array(2) {
    ["Variable_name"]=>
    string(18) "collation_database"
    ["Value"]=>
    string(15) "utf8_general_ci"
  }
  [2]=>
  array(2) {
    ["Variable_name"]=>
    string(16) "collation_server"
    ["Value"]=>
    string(15) "latin1_swedish_ci"
  }
}

Я не уверен, почему сортировка сервера latin1_swedish_ci вызвала проблему, когда соединения и сопоставления баз данных были utf8_general_ci, но когда я также изменил настройку сервера на utf8_general_ci:

set global collation_server = "utf8_general_ci";

Затем запрос начал работать с незаметно с PHP.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню