Полагаю, вы не заботитесь о сопоставлении client .
Единственное использование для клиента, связанного с набором символов, - это экранирующая функция, но она использует только набор символов и не заботится о сопоставлении, которое используется только на сервере.
Поэтому, если вам нужно установить параметры сортировки c, правильный код будет
mysqli_set_charset($con, 'utf8mb4');
mysqli_query($con, "SET COLLATION_CONNECTION = 'utf8mb4_unicode_ci'");
. После этого будут установлены и правильная кодировка, и параметры сортировки.
Вы можете проверить это со следующим кодом:
var_dump(mysqli_get_charset($con)->collation,$con->query("select @@collation_connection")->fetch_row()[0]);
mysqli_set_charset($con, 'utf8mb4');
var_dump(mysqli_get_charset($con)->collation,$con->query("select @@collation_connection")->fetch_row()[0]);
mysqli_query($con, "SET COLLATION_CONNECTION = 'utf8mb4_unicode_ci'");
var_dump(mysqli_get_charset($con)->collation,$con->query("select @@collation_connection")->fetch_row()[0]);
Для меня это выводит
string(17) "latin1_swedish_ci"
string(17) "latin1_swedish_ci"
string(18) "utf8mb4_general_ci"
string(18) "utf8mb4_general_ci"
string(18) "utf8mb4_general_ci"
string(18) "utf8mb4_unicode_ci"
, а последний - сопоставление connection - это то, что вам действительно нужно.