php插入含有特殊符号数据的处理方法


Posted in PHP onNovember 24, 2016

发现问题

当我们在向mysql写入数据时,如果数据中有特殊字符就会出现数据无法正常入库的情况,比如:

mysql_query(”update table set `name`='make's'”);

而这个时候一般就是使用addslashes()这个函数来转义数据中的特殊字符

处理方法

PHP为了安全性,所以引入了个magic_quotes_gpc = On的功能,可以不需要做任何处理就能直接把单引号插入数据库中,那么对于Off时,则需要考虑单引号的问题了,而不是一味地信任运行环境。

magic_quotes_gpc = On时,使用了addslashes()处理后的数据在数据库中将以\'形式保存,如果此时直接输出的话,就会发现比自己期待的内容多了个\,因此stripslashes()出场了,它能把\去掉(区别于str_replace(”\”, “”,$Str))。

magic_quotes_gpc = Off时,使用了addslashes()处理后的数据在数据库中将以'形式保存,没有上面说的有\的问题,addslashes()起到插入数据不出错的作用,如果此时直接输出的话,数据正常。不需要再用stripslashes()

addslashes()stripslashes()正好是相反的,直接记忆:addslashes()加个\,stripslashes()去个\

那么什么时候用呢?

简单说:

magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()stripslashes()都没关系,但是如果添加数据时用了addslashes() , 那么显示数据时必须要stripslashes()

magic_quotes_gpc = Off时,系统不会处理单引号等问题,所以插入数据时必须要使用addslashes() ,显示数据时则不需要使用stripslashes()

既然有了分析,做程序时要怎么办呢?根据以上两种情况,可得:

不管magic_quotes_gpc是On还是Off,咱添加数据时都用addslashes() ,当On时,必须使用stripslashes() ,Off时则不能用stripslashes()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
php preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
PHP 登录记住密码实现思路
May 07 PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
php微信公众平台开发类实例
Apr 01 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
laravel中的一些简单实用功能
Nov 03 PHP
如何在PHP中读写文件
Sep 07 PHP
PHP合并数组的2种方法小结
Nov 24 #PHP
PHP magento后台无法登录问题解决方法
Nov 24 #PHP
微信 开发生成带参数的二维码的实例
Nov 23 #PHP
微信 getAccessToken方法详解及实例
Nov 23 #PHP
Yii核心验证器api详解
Nov 23 #PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 #PHP
php in_array() 检查数组中是否存在某个值详解
Nov 23 #PHP
You might like
php获取YouTube视频信息的方法
2015/02/11 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
表单元素事件 (Form Element Events)
2009/07/17 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
python中global与nonlocal比较
2014/11/21 Python
go语言计算两个时间的时间差方法
2015/03/13 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
Ibatis的核心配置文件都有什么
2014/09/08 面试题
中间件分为哪几类
2012/03/14 面试题
初中同学聚会邀请函
2014/02/03 职场文书
财务科科长岗位职责
2014/03/10 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
python模板入门教程之flask Jinja
2022/04/11 Python