先看这段代码:
- if($this->version() > '4.1') {
- if($this->charset) {
- @mysql_query("SET character_set_connection=$this->charset, character_set_results=$this->charset, character_set_client=binary", $this->link);
- }
- if($this->version() > '5.0.1') {
- @mysql_query("SET sql_mode=''", $this->link);
- }
- }
首先version是根据mysql_get_server_info函数获取了当前mysql的版本号
如果是大于4.1版本 那么根据当前编码 设置数据库连接的初始编码
--------------------------------------
对于:character_set_connection character_set_results
看:http://blog.csdn.net/ypb455360299/article/details/7528099
--------------------------------------
至于这个设置:character_set_client=binary
在PHP语言情况下
可以防止一些SQL诸如 比如我在你的登陆窗口写
“用户名”=%dc%27%20or%201=1%20limit%201%20/*&
“密码”=88888*/%23
就有可能直接登陆你后台
但是你如果设置了SET character_set_client = binary
MYSQL 就会以二进制发送 不存在宽字节注入
--------------------------------------
set sql_mode CSDN有人已经写的很全了:
http://blog.csdn.net/winsonyuan/article/details/8202630