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与javascript的两种交互方式
Oct 09 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
php发送与接收流文件的方法
Feb 11 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
php获取本周开始日期和结束日期的方法
Mar 09 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
Apr 30 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 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 文本文件的读取效率
2012/02/10 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
使用django实现一个代码发布系统
2019/07/18 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
新年联欢会主持词
2014/03/27 职场文书
工作所在部门证明
2014/09/21 职场文书
国防教育标语
2014/10/08 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书