|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
实现固定数量的几张图片的上传;再如调试软件ZendStudio的使用,看了很多次老师的应用,但总感觉用的不顺手,不懂那么多的数据值,到底哪一个才是真正的问题所在;还有如数据库语句的封装,我只会用简单的函数来进行封装。mysql 起首,这片文章地道是我的团体经历之谈,合用于我罕见的情况及项目中.
团体建议,数据库字符集尽可能利用utf8(HTML页面临应的是utf-8),以使你的数据能很顺遂的完成迁徙,由于utf8字符集是今朝最合适于完成多种分歧字符集之间的转换的字符集,虽然你在号令行东西上能够没法准确检查数据库中的内容,我仍然激烈建议利用utf8作为默许字符集.
接上去是完全的一个例子:
1.创立数据库表
mysql>CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
#注重前面这句话 "COLLATE utf8_general_ci",大请安思是在排序时依据utf8校验集来排序
#那末在这个数据库下创立的一切数据表的默许字符集城市是utf8了
mysql>create table my_table (name varchar(20) not null default '')type=myisam default charset utf8;
#这句话就是创立一个表了,制订默许字符集为utf8
2.写数据
例子1是经由过程php直接拔出数据:
a.php
<?php
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
//请注重,这步很关头,假如没有这步,一切的数据读写城市不准确的
//它的感化是设置本次数据库联接过程当中,数据传输的默许字符集
//其他编程言语/接口也相似,例如 .net/c#/odbc
//jdbc则设置毗连字符串为相似"jdbc:mysql://localhost/db?user=user&password=123456&useUnicode=true&characterEncoding=UTF-8"
mysql_query("set names utf8;");
//必需将gb2312(当地编码)转换成utf-8,也能够利用iconv()函数
mysql_query(mb_convet_encoding("insert into my_table values('测试');", "utf-8", "gb2312"));
?>
例子是经由过程页面提交拔出数据2:
b.php
<?php
//输入本页编码为utf-8
header("content-type:text/html; charset=utf-8");
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
if(isset($_REQUEST['name'))
{
//因为下面已指定本页字符集为utf-8了,因而无需转换编码
mysql_query(sprintf("insert into my_table values('%s');", $_REQUEST['name']));
}
$q = mysql_query("select * from my_table");
while($r = mysql_fetch_row($q))
{
print_r($r);
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<form action="" method="post">
<input type="text" name="name" value="">
<input type="submit" value='submit'>
</form>
自此,利用utf8字符集的完全的例子停止了.
假如你想利用gb2312编码,那末建议你利用latin1作为数据表的默许字符集,如许就可以直接用中文在号令行东西中拔出数据,而且可以直接显示出来.而不要利用gb2312或gbk等字符集,假如忧虑查询排序等成绩,可使用binary属性束缚,例如:
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;
附1:旧数据晋级举措
以本来的字符集为latin1为例,晋级成为utf8的字符集。本来的表: old_table (default charset=latin1),新表:new_table(default charset=utf8)。
第一步:导出旧数据
mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql
第二步:转换编码(相似unix/linux情况下)
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
或可以去失落 -f 参数,让iconv主动判别本来的字符集
iconv -t utf-8 -c old.sql > new.sql
在这里,假定本来的数据默许是gb2312编码。
第三步:导入
修正old.sql,在拔出/更新语句入手下手之前,增添一条sql语句: "SET NAMES utf8;",保留。
mysql -hlocalhost -uroot my_db < new.sql
半途而废!!
附2:撑持检查utf8字符集的MySQL客户端有
1.) MySQL-Front,听说这个项目已被MySQL AB迫令中断了,不知为什么,假如国际还有很多破解版可以下载(不代表我保举利用破解版 :-P)。
2.) Navicat,另外一款十分不错的MySQL客户端,汉化版刚出来,还约请我试用过,总的来讲仍是不错的,不外也需求付费。
3.) PhpMyAdmin,开源的php项目,十分好。
4.) Linux下的终端东西(Linux terminal),把终真个字符集设置为utf8,毗连到MySQL以后,履行 SET NAMES UTF8; 也能读写utf8数据了。
附3:直接利用MySQL供应的 ALTER 语法转换字符集
这对宽大非utf8又想转成utf8的用户来讲,是个天大的喜信,我也是在进修MySQL手册是才发明的。详细用法以下:
ALTER TABLE OLD_TABLE CONVERT TO CHARACTER SET charset_name [COLLATE collation_name];
转换之前,记得要先备份旧表,以防万一。上面是一个实践的例子:
ALTER TABLE `t_yejr` CONVERT TO CHARACTER SET UTF8;
这个办法应当是从MySQL 4.1才入手下手供应的,人人可以反省一下本人的版本是不是撑持,假如不撑持,只好依照下面提到的转换了。enjoy it!!!
学习了六个多月PHP了,还是个新手,在这里受到了很多人的帮助,谢谢你们! |
|