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实现的在线人员函数库
Apr 09 PHP
认识并使用PHP超级全局变量
Jan 26 PHP
PHP 类相关函数的使用详解
May 10 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 PHP
php连接oracle数据库及查询数据的方法
Dec 29 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
php动态添加url查询参数的方法
Apr 14 PHP
PHP通过串口实现发送短信
Jul 08 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
Jul 03 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 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
NOT NULL 和NULL
2007/01/15 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
JavaScript 学习笔记(六)
2009/12/31 Javascript
JavaScript中的类继承
2010/11/25 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
python3编码问题汇总
2016/09/06 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
python 实现两个npy档案合并
2020/07/01 Python
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
优秀的教师个人的中文求职信
2013/09/21 职场文书
中标通知书范本
2015/04/17 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
员工考勤管理制度
2015/08/06 职场文书
高三化学教学反思
2016/02/22 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS