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制作静态网站的模板框架(二)
Oct 09 PHP
最简单的PHP程序--记数器
Oct 09 PHP
php数组应用之比较两个时间的相减排序
Aug 18 PHP
php pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
php使用正则验证中文
Apr 06 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
Yii2 批量插入、更新数据实例
Mar 15 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 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
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
js中replace的用法总结
2013/12/27 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
浅谈Python中range和xrange的区别
2017/12/20 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
Anaconda入门使用总结
2018/04/05 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
Python如何获取文件路径/目录
2020/09/22 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
C/C++有关内存的思考题
2015/12/04 面试题
优秀班集体先进事迹材料
2014/05/28 职场文书
单位租房协议书样本
2014/10/30 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
python基础之//、/与%的区别详解
2022/06/10 Python