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 数组实例说明
Aug 18 PHP
PHP提取数据库内容中的图片地址并循环输出
Mar 21 PHP
php 随机排序广告的实现代码
May 09 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
基于php设计模式中工厂模式详细介绍
May 15 PHP
php自动加载机制的深入分析
Jun 08 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
May 09 PHP
PHP如何实现跨域
May 30 PHP
PHP常用算法和数据结构示例(必看篇)
Mar 15 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 PHP
php字符串倒叙
Apr 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
一个程序下载的管理程序(四)
2006/10/09 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
Jquery中"$(document).ready(function(){ })"函数的使用详解
2013/12/30 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
用Python进行TCP网络编程的教程
2015/04/29 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
Python模块future用法原理详解
2020/01/20 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
Python中如何定义一个函数
2016/09/06 面试题
工伤赔偿协议书
2014/04/15 职场文书
安全生产承诺书范文
2014/05/22 职场文书
合作协议书范文
2014/08/20 职场文书
整改落实自查报告
2014/11/05 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL