无法更改PHP MySQLi连接的Charset

时间:2017-02-16 14:58:54

标签: php mysql mariadb

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

  

“charset utf8mb4”中的错误SQL错误;您的SQL中有错误   句法;检查与MariaDB服务器对应的手册   在第1行'charset utf8mb4'附近使用正确语法的版本

2 个答案:

答案 0 :(得分:1)

据我所知,MySQL Server也没有任何charset命令。您可以使用SET NAMES指定charset,这是设置多个相关变量的快捷方式(无论如何都可以使用SET命令设置所有这些变量)。

您可能会对官方命令行客户端的命令感到困惑:

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,而不是命令行客户端,因此它不存在。

当然,设置编码的mysqli方法是mysqli::set_charset()

答案 1 :(得分:0)

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