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 相关文章推荐
在线短消息收发的程序,不用数据库
Oct 09 PHP
解决中英文字符串长度问题函数
Jan 16 PHP
用mysql内存表来代替php session的类
Feb 01 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
Jun 23 PHP
PHP中用hash实现的数组
Jul 17 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
smarty中常用方法实例总结
Aug 07 PHP
php如何实现只替换一次或N次
Oct 29 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
php7 图形用户界面GUI 开发示例
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
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python深入06——python的内存管理详解
2016/12/07 Python
对python中return和print的一些理解
2017/08/18 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
python删除某个目录文件夹的方法
2020/05/26 Python
python和php哪个更适合写爬虫
2020/06/22 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
Born鞋子官网:Born Shoes
2017/04/06 全球购物
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
战略合作意向书
2014/07/29 职场文书
论文评审意见
2015/06/05 职场文书
Nginx实现负载均衡的项目实践
2022/03/18 Servers