仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 614|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页设计小谈MySQL字符集

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
#
发表于 2015-2-4 00:13:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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了,还是个新手,在这里受到了很多人的帮助,谢谢你们!
莫相离 该用户已被删除
18#
发表于 2015-5-6 22:10:51 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
山那边是海 该用户已被删除
17#
发表于 2015-5-6 08:10:52 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
第二个灵魂 该用户已被删除
16#
发表于 2015-5-4 08:47:25 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
精灵巫婆 该用户已被删除
15#
发表于 2015-4-25 11:49:23 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
柔情似水 该用户已被删除
14#
发表于 2015-4-23 03:55:24 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
因胸联盟 该用户已被删除
13#
发表于 2015-4-15 10:14:52 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
admin 该用户已被删除
12#
发表于 2015-4-1 08:35:44 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
不帅 该用户已被删除
11#
发表于 2015-3-29 17:37:26 | 只看该作者
实践是检验自己会不会的真理。
爱飞 该用户已被删除
10#
发表于 2015-3-24 02:09:19 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
冷月葬花魂 该用户已被删除
9#
发表于 2015-3-22 02:07:56 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
活着的死人 该用户已被删除
8#
发表于 2015-3-22 02:07:55 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-15 16:02:23 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
透明 该用户已被删除
6#
发表于 2015-3-13 09:53:34 | 只看该作者
爱上php,他也会爱上你。
金色的骷髅 该用户已被删除
5#
发表于 2015-3-8 12:43:45 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
海妖 该用户已被删除
地板
发表于 2015-2-25 19:03:13 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
谁可相欹 该用户已被删除
板凳
发表于 2015-2-9 23:02:50 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
飘飘悠悠 该用户已被删除
沙发
发表于 2015-2-9 20:56:33 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
若天明 该用户已被删除
楼主
发表于 2015-2-4 08:54:10 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-29 12:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表