phpmysql创建数据库
一、转码失败
在数据写入到表的过程中转码失败,数据库端也没有进行恰当的处理,导致存放在表里的数据乱码。
针对这种情况,前几篇文章介绍过客户端发送请求到服务端。
其中任意一个编码不一致,都会导致表里的数据存入不正确的编码而产生乱码。
比如下面简单一条语句:
set @a = "文本字符串";
insert into t1 values(@a);
变量 @a 的字符编码是由参数 CHARACTER_SET_CLIENT 决定的,假设此时编码为 A,也就是变量 @a 的编码。
2. 写入语句在发送到 MySQL 服务端之前的编码由 CHARACTER_SET_CONNECTION 决定,假设此时编码为 B。
3. 经过 MySQL 一系列词法,语法解析等处理后,写入到表 t1,表 t1 的编码为 C。
那这里编码 A、编码 B、编码 C 如果不兼容,写入的数据就直接乱码。
二、客户端乱码
表数据正常,但是客户端展示后出现乱码。
这一类场景,指的是从 MySQL 表里拿数据出来返回到客户端,MySQL 里的数据本身没有问题。客户端发送请求到 MySQL,表的编码为 D,从 MySQL 拿到记录结果传输到客户端,此时记录编码为 E(CHARACTER_SET_RESULTS)。
那以上编码 E 和 D 如果不兼容,检索出来的数据就看起来乱码了。但是由于数据本身没有被破坏,所以换个兼容的编码就可以获取正确的结果。
这一类又分为以下三个不同的小类:
1)字段编码和表一致,客户端是不同的编码
比如下面例子, 表数据的编码是 utf8mb4,而 SESSION 1 发起的连接编码为 gbk。那由于编码不兼容,检索出来的数据肯定为乱码。
2)表编码和客户端的编码一致,但是记录之间编码存在不一致的情形
比如表编码是 utf8mb4,应用端编码也是 utf8mb4,但是表里的数据可能一半编码是 utf8mb4,另外一半是 gbk。那么此时表的数据也是正常的,不过此时采用哪种编码都读不到所有完整的数据。这样数据产生的原因很多,比如其中一种可能性就是表编码多次变更而且每次变更不彻底导致(变更不彻底,我之前的篇章里有介绍)。举个例子,表 t3 的编码之前是 utf8mb4,现在是 gbk,而且两次编码期间都被写入了正常的数据。
3)每个字段的编码不一致,导致乱码和第二点一样的场景。不同的是:非记录间的编码不统一,而是每个字段编码不统一。举个例子,表 c1 字段 a1,a2。a1 编码 gbk,a2 编码是 utf8mb4。那每个字段单独读出来数据是完整的,但是所有字段一起读出来,数据总会有一部分乱码。
三、LATIN1
还有一种情形就是以 LATIN1 的编码存储数据
估计大家都知道字符集 LATIN1,LATIN1 对所有字符都是单字节流处理,遇到不能处理的字节流,保持原样,那么在以上两种存入和检索的过程中都能保证数据一致,所以 MySQL 长期以来默认的编码都是 LATIN1。这种情形,看起来也没啥不对的点,数据也没乱码,那为什么还有选用其他的编码呢?原因就是对字符存储的字节数不一样,比如 emoji 字符 "❤",如果用 utf8mb4 存储,占用 3 个字节,那 varchar(12) 就能存放 12 个字符,但是换成 LATIN1,只能存 4 个字符。
B. php mysql怎么创建数据库图解
在一个服务器上一般来讲都不止一个站点,更不止一个MySQL(和PHP搭配之最佳组合)数据库。
为了防止安全隐患,我们一般针对每个数据库都设置了独立的数据库访问帐号,该帐号仅有访问该数据库的权限。下面就让我们来具体演示一下:
1、首先我们要登陆php(做为现在的主流开发语言)MyAdmin,不做演示。
4、在主界面的右边点击“权限”来创建数据库帐号。
5、在权限页面中,我们点击“添加新用户”
6、在该页面中,我们填写要创建的数据库用户名,该用户的访问范围,及密码。
如上图,我们填写了用户名为:cncmsuser,该数据库用户只允许本机访问,主机一项选择本地;密码我们使用自动生成的,点下面的“Generate”会生成一个随机密码,然后点“Copy”会自动填写到密码框中。
下面的框都不选,直接拉到页面最下面点执行即可创建一个新用户。
数据库用户创建成功,会返回如下页面:
7、最重要的一步,设置该用户的数据库访问权限
在数据库用户添加成功返回的页面中可以直接设置权限。这里我们选择按数据库指定权限:
如上图,在数据库列表中选择我们刚刚创建的cncmstest,即会自动进入该数据库的权限设置页面。
在上图的权限设置中,我们把“数据”、“结构”两列的权限全部选中,管理权限都不要选。点执行即可。
到这里,我们已经全部设置完毕了,创建了一个数据库:cncmstest,并创建了数据库用户cncmsuser,特别指定了该用户只对cncmstest的访问权限。如此,便达到了我们一开始所讲的目的:为每一个数据库指定独立的用户访问权限。
C. 如何搭建php+mysql环境
1、下载phpstudy软件包,双击运行这个phpstudy软件包。在“安装-phpstudy 绿色集成环境”对话框里点击“下一步”按钮。
2、在“安装-phpstudy 绿色集成环境”对话框里请“选择目标位置”,如默认安装,请直接点击“下一步”按钮。
3、“安装-phpstudy 绿色集成环境”选择PHP程序存放目录对话框里,如不想更改,请点击“下一步”按钮。
4、在“安装-phpstudy 绿色集成环境”选择你要安装组件,点击“下一步”。
5、在“安装-phpstudy 绿色集成环境”选择开始菜单文件夹对话框里,可以修改phpstudy名字和在开始菜单里的文件夹位置,本人建议默认安装,点击“下一步”。下面正式进入phpstudy 绿色集成环境安装过程。
6、安装过程直到出现完成为止,点击“完成”按钮,浏览器打开localhost页面,phpStudy 探针能正常显示,代表你的php+mysql+apache环境搭建成功。
以上就是win10系统下一键搭建php+mysql+apache环境的方法介绍了。想要了解更多win10系统相关资讯或windows10正式版下载信息的话,请时刻关注系统城。
D. php+mysql鏁版嵁搴扑腑鏂囱繛鎺ヤ贡镰侊纻set names utf8 涔熶笉琛岋紒
MySQL浼氩嚭鐜颁腑鏂囦贡镰佺殑铡熷洜涓嶅栦箮涓嫔垪鍑犵偣锛
1.server链韬璁惧畾闂棰桡纴瀹夎呮椂浣跨敤镄勫瓧绗﹂泦鏄痩atin1
2.table镄勮绯昏惧畾闂棰(鍖呭惈character涓巆ollation)
3.瀹㈡埛绔绋嫔纺(渚嫔俻hp)镄勮繛绾胯绯昏惧畾闂棰
姝e傛偍璁惧畾镄勪竴镙凤纴寤鸿浣跨敤UTF8锛屽彲鍏煎逛竴鍒囧瓧绗︺备互涓嬩负瑙e喅锷炴硶锛
涓銆侀伩鍏嶅垱寤烘暟鎹搴揿强琛ㄥ嚭鐜颁腑鏂囦贡镰佸拰镆ョ湅缂栫爜鏂规硶
1銆佸垱寤烘暟鎹搴撶殑镞跺欙细CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
2銆佸缓琛ㄧ殑镞跺 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
鍗冲缓搴揿拰寤鸿〃镞堕兘浣跨敤鐩稿悓镄勭紪镰佹牸寮忋
浣嗘槸濡傛灉浣犲凡缁忓缓浜嗗簱鍜岃〃鍙浠ラ氲繃浠ヤ笅鏂瑰纺杩涜屾煡璇銆
镓ц孲ET NAMES utf8镄勬晥鏋灭瓑钖屼簬钖屾椂璁惧畾濡备笅锛
SET character_set_client='utf8';
SET character_set_connection='utf8';
SET character_set_results='utf8';
浜屻侀伩鍏嶅煎叆鏁版嵁链変腑鏂囦贡镰佺殑闂棰
1:灏嗘暟鎹缂栫爜镙煎纺淇濆瓨涓簎tf-8
璁剧疆榛樿ょ紪镰佷负utf8锛歴et names utf8;
璁剧疆鏁版嵁搴揹b_name榛樿や负utf8:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
璁剧疆琛╰b_name榛樿ょ紪镰佷负utf8:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
瀵煎叆锛歀OAD DATA LOCAL INFILE 'C:\\utf8.txt' INTO TABLE yjdb;
2:灏嗘暟鎹缂栫爜镙煎纺淇濆瓨涓篴nsi(鍗矴BK鎴朑B2312)
璁剧疆榛樿ょ紪镰佷负gbk锛歴et names gbk;
璁剧疆鏁版嵁搴揹b_name榛樿ょ紪镰佷负gbk:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
璁剧疆琛╰b_name榛樿ょ紪镰佷负gbk:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
瀵煎叆锛歀OAD DATA LOCAL INFILE 'C:\\gbk.txt' INTO TABLE yjdb;
娉锛1.UTF8涓嶈佸煎叆gbk锛実bk涓嶈佸煎叆UTF8;
2.dos涓嬩笉鏀鎸乁TF8镄勬樉绀;
涓夈佽В鍐崇绣椤典腑涔辩爜镄勯梾棰
灏嗙绣绔欑紪镰佽句负 utf-8,杩欐牱鍙浠ュ吋瀹逛笘鐣屼笂镓链夊瓧绗︺傚傛灉缃戠珯宸茬粡杩愪綔浜嗗ソ涔,宸叉湁寰埚氭棫鏁版嵁,涓嶈兘鍐嶆洿鏀圭亩浣扑腑鏂囩殑璁惧畾,闾d箞寤鸿灏嗛〉闱㈢殑缂栫爜璁句负 GBK, GBK涓嶨B2312镄勫尯鍒灏卞湪浜:GBK鑳芥瘆GB2312鏄剧ず镟村氱殑瀛楃,瑕佹樉绀虹亩浣撶爜镄勭箒浣揿瓧,灏卞彧鑳界敤GBK銆
1.缂栬緫/etc/my.cnf銆,鍦╗mysql]娈靛姞鍏default_character_set=utf8;
2.鍦ㄧ紪鍐机onnection URL镞讹纴锷犱笂?useUnicode=true&characterEncoding=utf-8鍙;
3.鍦ㄧ绣椤典唬镰佷腑锷犱笂涓涓"set names utf8"鎴栬"set names gbk"镄勬寚浠わ纴锻婅瘔MySQL杩炵嚎鍐呭归兘瑕佷娇鐢╱tf8鎴栬単bk銆
甯屾湜瀵逛綘链夋墍甯锷┿