解决php mysql查询插入中文乱码问题

 更新时间:2016年11月25日 17:37  点击:1619
对于初学php的朋友碰到问题肯定最多的就是php mysql查询插入中文乱码了,这个问题对于老手来讲不是问题,下面我根据自己的经验来给各位分析一下吧。

一.中文问题其实就是经统一编码了否则就会乱码

1.数据库与php页面编码统一

2.数据库数据表字段与页面编码统一

如果做到上面两种就不存在中文乱码问题了,那么我们来看mysql中文乱码问题解决例子

1.我的mysql表如下

--
-- 表的结构 `useradmin`
--

 代码如下 复制代码

CREATE TABLE IF NOT EXISTS `userain` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) DEFAULT NULL,
  `userpass` varchar(40) DEFAULT NULL,
  `logins` int(4) NOT NULL DEFAULT '0' COMMENT '登陆次数',
  `logintime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `mid` char(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

上面所有的都是utf8编码了,这样我来测试一个中文

 代码如下 复制代码

INSERT INTO `userain` (`id`, `我是中文`, `userpass`, `logins`, `logintime`, `mid`) VALUES
(1, 'admin', '7c1f03139281878059b909c42ccf2f6a', 0, '2010-04-14 14:20:26', '1');

我说可以正常进入也有人说肯定不行其实关键不在sql语句了,重点在于php连接mysql数据时的编码设置,如下。

页面编辑为gbk

 代码如下 复制代码

<?php
//配置mysql数据库连接参数
$db = mysql_connect("localhost", "user","password");
mysql_select_db("message",$db);
//在执行sql语句之前加上下面这一行 

?>

连接数据库之后提交肯定是乱码或保存不进行了,如果要解决这个mysql中文乱码问题很简单在查询处的

 代码如下 复制代码

<?php
//配置mysql数据库连接参数
$db = mysql_connect(www.111cn.net, "user","password");
mysql_select_db("message",$db);
//在执行sql语句之前加上下面这一行 
mysql_query("SET NAMES 'utf8'",$db);

这样再提交你会发现就算你的页面是gbk的提交的数据保存也会成功哦

ps:对于ajax我们就一定要用uft8了,因为ajax只支持uft8模式传输数据。

windows2003,在装phpmyadmin的时候居然报错 Warning: require(./libraries/Error_Handler.class.php) [function.require]: 。解决方法如下

在安装phpMyAdmin-4.0.10.7时出现如下错误:(我的机器是windows server 2003 + iis6.0+php5.2.17)

Warning: require(./libraries/Error_Handler.class.php) [function.require]: failed to open stream: No such file or directory in E:wwwphpMyAdminlibrariescommon.inc.php on line 64

Fatal error: require() [function.require]: Failed opening required './libraries/Error_Handler.class.php' (include_path='.;C:php5pear') in E:wwwphpMyAdminlibrariescommon.inc.php on line 64

common.inc.php和Error_Handler.class.php文件是存在的,php是装在D:php下,后来网上找了好久发现是目录权限不足。

给phpmyadmin安装的上级目前加上Users权限,就可以了,比如我的phpmyadmin是在www下面,就给www加上User的读和执行权限。

json只能使用utf-8编码来进行操作,否则就会返回null或空字符串了,下面提供一个非常简单的办法供大家参考。

原因分析

其它的json_decode($str)返回NULL的一些原因:
1.$str只能UTF-8编码
2.元素最后不能有逗号(与php的array不同)
3.元素不能使用单引号
4.元素值中间不能有空格和\n,必须替换

在用PHP JSON处理符合标准的GBK编码内容时会返回null,将内容从GBK转换为UTF8再处理正常:

 代码如下 复制代码


$jsonp = mb_convert_encoding($jsonp, "gbk", "utf-8");
//或
$jsonp = iconv('gbk','utf-8',$jsonp)

php5.5升级了很多功能的同时也去除了不少功能了,小编在使用ecshop提示Only variables should be passed by reference错误了,下文就来和各位一起看解决办法。

php大家用的版本不断提高,Ecshop没有来得及修改那么及时。

Ecshop安装出现

Only variables should be passed by reference

5.3以上版本的问题,应该也和配置有关 只要418行把这一句拆成两句就没有问题了

 代码如下 复制代码

 $tag_sel = array_shift(explode(' ', $tag));

改成:

 $tag_arr = explode(' ', $tag);  $tag_sel = array_shift($tag_arr);

(实验过,绝对可行) 因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值

修改

 代码如下 复制代码

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead...?
cls_template.php

 $out = "<?php \n" . '$k = ' . preg_replace_callback("/(\'\\$[^,]+)/e" , "stripslashes(trim('\\1','\''));", var_export($t, true)) . ";\n";

数据丢失对于小编来讲是个头痛的问题了,因为小编碰到表单提交大量数据发生丢失问题也是这几天了,但不是时尚而有时会丢失了,这个问题非常难解决,下面整理了一些解决办法,希望可以帮助到各位。

网上找了一堆,php.ini 的post_max_size和upload_max_filesize都设置了很大的值,没用,nginx的client_max_body_size 500m;加到了那么大的值,也没用。
最后终于google到办法:原来PHP从5.3.9开始增加一个变量 max_input_vars 用来限制提交的表单数量,实在无语。
后来查看php这一部分源码看到这句代码:

 代码如下 复制代码

if (++count > PG(max_input_vars)) {
                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Input variables exceeded %ld. To increase the limit change max_input_vars in     php.ini.", PG(max_input_vars));
                 return;
}

猛然间想起来,php5.3.10在解决hash冲突受攻击时,增加了一个配置指令max_input_vars。php.ini中增加这个指令的值即可。

php 表单提交长文章数据丢失问题解决方法

该值默认情况下是1000 , 不能满足有1000个以上输入项的需求,所以得在php.ini 里面加上更大的值如:
max_input_vars = 5000

[!--infotagslink--]

相关文章

  • php生成二维码中文乱码问题解决方法

    最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • mybatis-plus 处理大数据插入太慢的解决

    这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • Mysql在debian系统中不能插入中文的终极解决方案

    在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
  • PHP json_encode() 函数详解及中文乱码问题

    在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<&#63;php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
  • Mysql中 unique列插入重复值该怎么解决呢

    当unique列在一个UNIQUE键上插入包含重复值的记录时,我们可以控制MySQL如何处理这种情况:使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更新旧记录为新值。mysql> create table menus(id t...2015-11-08
  • 解决HttpPost+json请求---服务器中文乱码及其他问题

    这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22
  • php中iconv编码转换来解决中文乱码的问题

    用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些 代码如下 复制代码 ...2016-11-25
  • php mail发邮件标题中文乱码的问题解决办法

    本文章来给大家介绍php mail发邮件标题中文乱码的问题解决办法,希望到此类问题的朋友可进入参考。 当使用下面的PHP语句发送电子邮件的时候,如果编码和接收邮箱编码...2016-11-25
  • c# 用Dictionary实现日志数据批量插入

    这篇文章主要介绍了c# 用Dictionary实现日志数据批量插入的步骤,帮助大家更好的理解和使用c#中的Dictionary类,感兴趣的朋友可以了解下...2021-02-01
  • Asp.Net使用Bulk实现批量插入数据

    这篇文章主要介绍了Asp.Net使用Bulk实现批量插入数据的方法,对于进行asp.net数据库程序设计非常有借鉴价值,需要的朋友可以参考下...2021-09-22
  • MongoDB CRUD操作中的插入实例教程

    这篇文章主要给大家介绍了关于MongoDB CRUD操作中的插入的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-12-08
  • C#对Word文档的创建、插入表格、设置样式等操作实例

    今天小编就为大家分享一篇C#对Word文档的创建、插入表格、设置样式等操作实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • 解决PHPWord导出生成Word中文乱码问题

    PHPWord是一个可以把相关文件生成word文档的插件了,但由于是老外开发的对于gbk支持不好,所以我们在导出带有中文的word时会出现乱码问题,下面本文就PHPWord中文乱码问题...2016-11-25
  • PHP中截取中文乱码解决办法

    如果ASCii码大于0xa0就是半个汉字;了解substr()、mb_substr()、ord()。 现在常用的编码格式是UTF8,GBK,GBK2312,BIG5。GBK是GBK2312的升级。现在我开发中遇到的基本都...2016-11-25
  • Python操控mysql批量插入数据的实现方法

    这篇文章主要介绍了Python操控mysql批量插入数据的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-27
  • mysql 选择B表数据插入到A表,同时在A表加一个字段的SQL

    mysql 选择B表数据插入到A表,同时在A表加一个字段的SQL...2013-09-23
  • iis伪静态中文url出现乱码的解决办法

    这篇文章主要介绍了iis伪静态中文url出现乱码的解决办法,需要的朋友可以参考下...2017-07-06
  • .Net获取URL中文参数值的乱码问题解决方法总结

    这篇文章主要介绍了.Net获取URL中文参数值的乱码问题解决方法,总结分析了针对URL参数传递中出现的乱码问题与相应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下...2021-09-22