Да, вы должны избегать любых строк, отправляемых в MySQL.В частности, по крайней мере, '
, "
и \
должны быть экранированы.В противном случае, как вы думаете, произойдет ли при вставке в таблицу имя O'Brian
таким образом?любой желаемый CHARACTER SET
.
Таблица может иметь любой желаемый по умолчанию CHARACTER SET
.
База данных может иметь любой желаемый по умолчанию CHARACTER SET
.Примечание. Этот параметр бесполезен, если вы явно указали CREATEing
столбцы или таблицы.
Сервер может иметь любой желаемый по умолчанию CHARACTER SET
.Примечание. Этот параметр бесполезен, если вы явно указали CREATEing
базы данных / таблицы / столбцы.
Между тем, клиент может иметь любую другую CHARACTER SET
.Но способ сообщить серверу, какую кодировку имеет клиент, - это 3 из этих настроек (клиент / соединение / результаты).Можно установить массово через
SET NAMES utf8mb4;
Однако, обычно «лучше» установить кодировку клиента с помощью какого-либо параметра во время процесса соединения.(Синтаксис для такого варьируется от клиента к клиенту - Java / PHP / VB / и т. Д.)
Почему так много?Это, вероятно, слишком много.Практически все практические случаи обрабатываются путем изменения этого трио настроек;между тем, другие настройки можно игнорировать.
Еще одна вещь: хранимые подпрограммы имеют набор символов и параметры сортировки, и я думаю, что это происходит из настроек базы данных.