php插入含有特殊符号数据的处理方法

yipeiwu_com6年前PHP代码库

发现问题

当我们在向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内存缓存实现方法。分享给大家供大家参考。具体如下: 在php中缓存分为很多种类型如,内存缓存,文件缓存,页面缓存。本文要来讲述关于php中内存缓存的一些方法,这里我们...

PHP 5.5 创建和验证哈希最简单的方法详解

我们首先讨论password_hash()函数。这将用作创建一个新的密码的哈希值。它包含三个参数:密码、哈希算法、选项。前两项为必须的。你可以根据下面的例子来使用这个函数:复制代码 代码...

PHP缓存技术的使用说明

在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,典型的处理过程是:连接数据库->准备 SQL查询->发送查询到数据库->取得数据...

PHP的Yii框架中移除组件所绑定的行为的方法

要移除行为,可以调用 yii\base\Component::detachBehavior() 方法用行为相关联的名字实现: $component->detachBehavio...

php 8小时时间差的解决方法小结

原来从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的 也就是显示的时间(无论用什么php命令)都是格林威治标准时间 和我们的时间(北京...