从php5.2.3以及mysql5.0.7之后SET NAMES 'utf8'这类语句将不再建议使用,而尽量要使用mysql_set_charset()函数。 如:
$conn = mysql_connect('127.0.0.1', 'root', '');
mysql_query('SET NAMES utf8' ,$conn);
此代码要修改为:
$conn = mysql_connect('127.0.0.1', 'root', '');
mysql_set_charset('uft8', $conn);
其中utf8也可以是gbk或代码页,如cp936。
该改变在PHP5.2.3的手册中有关mysql_set_charset()上已经声明: http://cn.php.net/manual/zh/function.mysql-set-charset.php
删除该用法,一来可以避免SQL注入,二来我们来看如下完整程序:
执行结果如下: latin1 latin1 latin1 latin1 gbk gbk utf8
其实用的set names 只是告诉mysql要进行具体编码,mysql还要做一次转换,效率有所折扣。
所以各位在PHP5.2.3以上的环境中尽量不要再使用 SET NAMES 'XXX'.