Mysql中文乱码问题的小结
概述:
1.乱码问题归根到底是字符集的问题,那就从字符集设置方面考虑,不外乎下面几方面:
server(Mysql服务器),client,database(数据库),connection(连接),result
MySQL的字符集处理是这样的:
(1)发送请求
客户端(character_set_client)=》数据库连接(character_set_connection)=》存储数据库(table,column)
(2)返回请求
存储数据库(table,column)=》数据库连接(character_set_connection )=》客户端(character_set_results)在每一个非初始节点,都会做一次从上一个结点到当前节点的字符集转换操作。
2.MySQL中默认字符集的设置有四级:服务器级,数据库级,表级,字段级
设置步骤:
1.修改Mysql服务器的默认字符编码(Mysql安装目录下的my.ini文件)
CLIENT SECTION中设置default-character-set=utf8
SERVER SECTION中设置default-character-set=utf8
在Mysql命令行输入\s,查看Mysql服务器信息,其中有:
Server characterset:utf8
Db characterset:utf8
Client characterset:utf8
Conn. characterset:utf8
设置成功。
2.新建数据库、表、字段都会使用默认编码
3.页面编码采用与数据库相同编码(utf-8)
这样就不会出现乱码的情况了。
4.如果数据库编码和页面编码不一致时,那么在连接数据库时要指定与页面一致的编码方式,有两种方式:
mysql_set_charset(string charset,[link_identifier]):首选方式
mysql_query("SET NAMES 'charset'"):不推荐使用
mysql_set_charset() 比 mysql_query("SET NAMES 'XXX'")多了一个设置,就是把struct MySQL的charset成员也设置了。这个成员变量在escape的时候起着很重要的作用,特别是对于GBK这种运行把“”作为字符一部分的编码格式。如果你只使用mysql_query(”set names XXX”),那么在某些字符集,会有重大的安全漏洞,导致mysql_real_escape_string变得和addslashes一样不安全。
5.另外要注意的是页面文件编码方式与页面头部的meta信息中的charset一定要保持一致,这是最基本的设置。
相关文档:
截取province字符串中第一个<br>前的字符串~!
update lcjd
set `province` = substring_index( `province` , '<br>', '1' );
在需要添加‘0’的位置添加一个‘0’
update lcjd
set lc_name2 = concat('0', lc_name2)
WHERE length(lc_name2) = 3
http://www.sqlstudy.com/s ......
//主键
alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);
//增加一个新列
alter table t2 add d timestamp;
alter table infos add ex tinyint not null default '0';
//删除列
alter table t2 drop column c;
//重命名列
......
1.SELECT
*
from
table
LIMIT
1
,
20
;
//
检索记录行
2-21
第一个参数:查询起始行(从0开始)
第二个参数:查询几条记录
2.
SELECT
*
from
table
LIMIT
5
,
-
1
;
//
&nbs ......
#
-*- encoding: gb2312 -*-
import
os, sys, string
import
MySQLdb
#
连接数据库
try
:
conn
=
MySQLdb.connect(host
=
'
localhost
'
,user
=
'
root
'
,passwd
=
'
xxxx
'
,db
=
'
test1
'
)
except
Exception, e:
print
e
sys.exit()
......
MySQL可以为不同的用户分配严格的、复杂的权限。这些操作大多都可以用SQL指令Grant(分配权限)和Revoke(回收权限)来实现。 Grant可以把指定的权限分配给特定的用户,如果这个用户不存在,则会创建一个用户。
Grant 常用格式:
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 ide ......