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 变量的定义方法
Jan 26 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 PHP
一个简单且很好用的php分页类
Oct 26 PHP
php mail to 配置详解
Jan 16 PHP
PHPUnit安装及使用示例
Oct 29 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
Jan 22 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 PHP
php中get_object_vars()在数组的实例用法
Feb 22 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
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
微信支付开发告警通知实例
2016/07/12 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
2017/02/19 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
Django model select的多种用法详解
2019/07/16 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
python redis存入字典序列化存储教程
2020/07/16 Python
python Pexpect模块的使用
2020/12/25 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
优秀员工自荐信范文
2013/10/05 职场文书
三年级科学教学反思
2014/01/29 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
股东协议书
2014/04/14 职场文书
安全协议书
2014/04/23 职场文书
销售员岗位职责
2014/06/09 职场文书
新生入学欢迎词
2015/01/26 职场文书
大学入学感言
2015/08/01 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android