案例:

php文件:install.php

--------编码:php保存文件的编码、php header编码、php程序的默认编码、php写入数据库的编码

php读取的sql代码文件:php.sql

--------编码:sql保存文件的编码

mysql数据库:test1

--------编码:mysql数据库程序的默认编码、test1的字符集编码、排序规则,表里边每个字段的字符集编码和排序规则

navicat软件

--------编码:建立连接时的编码

install.php文件的源代码:<?php

header("Content-type: text/html; charset=gb2312");

//读取文件内容

$_sql = file_get_contents('phplyb.sql');

$_arr = explode(';', $_sql);

$_mysqli = new mysqli('localhost','root','11111111');

if (mysqli_connect_errno()) {

exit('连接数据库出错');

}

//执行sql语句

foreach ($_arr as $_value) {

$_mysqli->query("SET NAMES 'gb2312'");

$_mysqli->query("CREATE DATABASE IF NOT EXISTS test1 DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;");

$_mysqli->query("USE test1");

$_mysqli->query($_value.';');

}

$_mysqli->close();

$_mysqli = null;

?>

问题:案例中那么多的编码,一不注意就碰到乱码问题,到底该怎么设置?

分析:

亲测。实际上,其他的编码都不重要,mysql、php、navicat以及php header的语言编码都可以默认。主要是保持这几个编码一致:sql保存文件的编码、php文件中两个mysqli->query语句中的编码和排序规则、数据库表里边每个字段的字符集编码和排序规则,都是utf8或者都是gb2312。

另外,如果需要指定mysql数据库程序的默认编码,可以在my.ini里添加如下参数:[mysql]

default-character-set=utf8

==========================================

[mysqld]

default-character-set=utf8

箭头所指的地方确保为utf8(注意不是utf-8),navicat 里的使用的是mysql字符集(此时不用再选择utf-8编码), 问题才得以解决!

怎么设置php.ini允许sql语句插入空值到mysql里_php读取.sql文件,写入mysql,navicat显示乱码,编码设置...相关推荐

  1. 在进行sql语句插入的时候,提示:不能将值 NULL 插入列 ‘备注‘,表 ‘Test0417.dbo.tb_举例‘;列不允许有 Null 值。INSERT 失败。

    一.概述: 在进行sql语句插入的时候,提示:不能将值 NULL 插入列 '备注',表 'Test0417.dbo.tb_举例':列不允许有 Null 值.INSERT 失败.如下所示: 二.分析 首 ...

  2. SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号

    SQL Server之 (四) ADO增删查改  登录demo  带参数的sql语句  插入自动返回行号 自己学习笔记,转载请注明出处,谢谢!---酸菜 1.什么是ADO.NET ADO.NET是一组 ...

  3. mysql中sql插入时间_mysql中使用sql语句插入日期时间类型的写法

    [例子如下: select * from ( select rownumber() over() as rownumber, id from associate ) as temp where row ...

  4. 执行多条SQL语句,执行数据库事务(可传入Sql参数)

    上篇博客,实例介绍了一个事务执行多条SQL语句函数(int ExecuteSqlTran(List<String> SQLStringList))点击打开链接,方便之余又发现了它的缺陷-- ...

  5. java解析sql语句简书,Mybatis原理解析(一)--java.sql数据库操作的基本实现方式

    在研究Mybatis原理之前,先看一下java中是如何实现一次对数据库的访问的: public void testSql() { Connection connection = null; State ...

  6. c语言解析sql语句_如何在C语言里面执行SQL语句?

    一.为什么要在C语言程序中执行SQL语句? 在C语言程序中执行SQL语句的原因有以下几个: (1)程序需要获取数据库中某数据表的字段值,并对这些字段值进行解析以执行后续操作. (2)程序需要更新数据库 ...

  7. python引号嵌套_【python】sql语句插入中内容同时包含单引号和双引号的解决办法...

    在python中调用MySQLdb模块插入数据信息,假设待输入信息data为: Hello'World"! 其中同时包含了单引号和双引号 一般插入语句为 sql = "insert ...

  8. SQL语句插入日期类型

    SQL语句往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ( '2007-12-20 18:31:34' , ...

  9. 使用SQL语句插入当前系统时间

    如何用 SQL 语句向 MySQL 数据库中插入当前系统时间,其实很简单,一个 now() 函数就可以了,获取当期系统时间,它是一个 Date 类型的值. 如下表:tb_test 表结构DDL: CR ...

最新文章

  1. 报错处理:sh: 1: Syntax error: “(“ unexpected
  2. 开封机器人餐厅_百合汇主题酒店——开封首家机器人服务员餐厅
  3. 查看总耗时_吉林德惠电力施工总承包资质代办
  4. Python智能对话机器人实现
  5. PHP简易留言板项目
  6. 3dmax 视频全集
  7. 不会安装Maya的同学看过来,安装步骤详解
  8. 计算机学院 储昭坤,计算机与信息学院“紫罗兰”团队开展志愿服务活动
  9. MATLAB 绘制平行六面体
  10. 安装MySQL---已删除服务,却显示服务已存在
  11. iOS实现网速实时监测
  12. Top命令查询结果界面参数详解
  13. 校验验证码 实现登录验证
  14. 微软仍计划在2017年发布两次Windows 10系统升级
  15. 微信辅助验证 信息填写正确 却提示绑卡信息错误的解决办法
  16. 今天OCM认证通过了
  17. win10平板读写TF卡异常的解决记录
  18. 图像的down-samplig 和up-sampling
  19. 历届研究生数学建模赛题汇总(转载)
  20. Android webview加载H5页面调起微信支付

热门文章

  1. Expected tensor for argument #1 ‘input‘ to have the same device as tensor for argument #2 ‘weight‘;
  2. pytorch两种常用的学习率衰减方法
  3. python+OpenCV图像处理(十)霍夫变换简单图形检测
  4. Halcon算子学习:sample_object_model_3d
  5. PHP之MVC项目实战(二)
  6. s3cmd安装及使用
  7. ThreadLocal与Synchronized的用法
  8. shell linux教程,Shell入门基础知识
  9. LwIP应用开发笔记之二:LwIP无操作系统UDP服务器
  10. skywalking(4)