Моя база данных использует параметры сортировки utf8_czech_ci, и я также хочу установить их для подключения к моей базе данных. Mysqli_set_charset не позволит мне установить параметры сортировки, если мне не нужен параметр по умолчанию, utf8_general_ci. Здесь было предложено сначала установить кодировку через mysqli_set_charset, а затем установить параметры сортировки с помощью SET NAMES. Итак, я это сделал, и параметры сортировки соединений по-прежнему utf8_general_ci.
В основном я использую код, предложенный YourCommonSense:
$spojeni=mysqli_connect('mysql01','username','password', 'my_database');
if (!$spojeni) die('Nepodařilo se připojit k databázi.');
mysqli_set_charset($spojeni,'utf8');
mysqli_query($spojeni, "SET COLLATION_CONNECTION = 'utf8_czech_ci';");
Однако я только что столкнулся с ошибкой «Недопустимое сочетание правил сортировки». Тестируя параметры сортировки соединения с помощью mysqli_get_charset(), я обнаружил, что у меня параметры сортировки «utf8_general_ci», а не «utf8_czech_ci», как должно быть. Это означает, что исходный принятый ответ перестал работать по какой-то загадочной причине. Я тестировал его как на локальном хосте, так и на размещенном сервере, и даже сразу после объявления базы данных, поэтому некоторые ошибки при изменении параметров сортировки кажутся невозможными.
Так как же изменить параметры сортировки другим способом?
Мой прежний код, для целей архивирования:
$spojeni=mysqli_connect('mysql01','username','password');
if (!$spojeni) die('Nepodařilo se připojit k databázi.');
mysqli_query($spojeni, "USE my_database");
mysqli_set_charset($spojeni,'utf8');
mysqli_query($spojeni, "SET NAMES 'utf8' COLLATE 'utf8_czech_ci';");
Подробнее здесь: https://stackoverflow.com/questions/206 ... ith-mysqli