无法更改 PHP MySQLi 连接的字符集

Cannot Change Charset Of PHP MySQLi Connection

为什么在我的服务器上连接 mysql 客户端时我可以 运行 "CHARSET utf8mb4" 并更改连接的字符集,但是当我尝试通过以下方式执行相同的语句时mysql我出现以下错误:

ERROR SQL error in "charset utf8mb4"; You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'charset utf8mb4' at line 1

据我所知,MySQL服务器也没有任何charset命令。您使用 SET NAMES 指定字符集,这是一个 short-cut 来设置几个相关变量(无论如何都可以使用 SET 命令设置)。

你可能对官方command-line客户端的命令感到困惑:

mysql> \h

For information about MySQL products and services, visit:
   http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
   http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
   https://shop.mysql.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
notee     (\t) Don't write into outfile.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.

因为您使用的是 PHP,而不是 command-line 客户端,所以它不存在。

当然mysqli设置编码的方式是mysqli::set_charset().

您可以使用 SET CHARACTER SET utf8mb4; 语句连接到数据库