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

摘要:
与ASP一样,数据库对单引号过敏。PHP引入了security_quotes_gpc=On函数,您可以直接在数据库中插入单引号,而无需任何处理。对于Off,您需要考虑单引号的问题,而不是盲目地信任运行环境。当magic_quotes_gpc=Off时,使用addslashes()处理的数据将以“”的形式保存在数据库中。没有上述问题。Addslashes()扮演插入数据而不出错的角色。如果此时直接输出数据,则数据正常。

我们在向mysql写入数据时,比如:

mysql_query(”update table set `title`=’kuhanzhu’s blog’”);

 http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/05/09/1731415.html

  那就会出错。同asp时一样,数据库都会对单引号过敏。而addslashes在这个时候就最长面子了,跟asp的replace(”‘”,”””,”kuhanzhu’s blog”)功能一样。

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()。

如何判断On还是Off呢?用get_magic_quotes_gpc()。

最后举例:

复制代码
php插入数据含有特殊符号的处理方法第2张代码
//提交数据,或者变量准备:

$Content=addslashes(”这里面是数据,不管有没单引号或者还是变量”);

//插入数据到数据库,代码省略

//开始显示数据


$Content=”从数据库读取的数据”;

if(get_magic_quotes_gpc()){
  
$Content=stripslashes($Content); 
}

echo $Content;
复制代码

免责声明:文章转载自《php插入数据含有特殊符号的处理方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Aery的UE4 C++游戏开发之旅(5)字符&字符串《数据库系统概念》8-选择、投影等关系运算下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

postgresql 一些简单应用(分页,取前N条数据,nvl(),数据类型转换)

1.分页 select * from (   select     row_number() over() as rownum,     H.*   from tableName H ) where rownum between page1  and page2  2.取前N条数据 select * from (   select     row_numb...

SQL Serve——版本

SQL Server查看版本 步骤一,打开SQL Server Mangement Studio,新建查询。 步骤二,输入select @@version。 FAQ 1.在我们使用别人导出的数据库的时候,有时候我们会通过附加数据库的方法,把别人导出的数据库附加到我们的电脑中,这时,或许你会遇到这种问题,附加时,提示版本为XXX,无法打开,支持AAA版本。...

后台返回的json数据传到前端页面并在页面的表格中填充

web前端页面: <table cellpadding="1" cellspacing="0" border="1"><caption align="top">流程管理</caption><thead> <tr> <th>流程ID</th> <th>流程名称&l...

基于Gin+Gorm框架搭建MVC模式的Go语言企业级后端系统

文/朱季谦 环境准备:安装Gin与Gorm 本文搭建准备环境:Gin+Gorm+MySql。 Gin是Go语言的一套WEB框架,在学习一种陌生语言的陌生框架,最好的方式,就是用我们熟悉的思维去学。作为一名后端Java开发,在最初入门时,最熟悉的莫过于MVC分层结构,可以简单归纳成controller层,model层,dao层,而在SpringBoot框架里...

CentOS 7 64位 安装 PostgreSQL 9.2整理

centos版本 LSB Version: :core-4.1-amd64:core-4.1-noarchDistributor ID: CentOSDescription: CentOS Linux release 7.0.1406 (Core)Release: 7.0.1406Codename: Core 注意:centos用yum安装postgres...

饿了么技术往事

小结: 1、从技术骨干再到技术团队负责人这一转变过程中,很容易被忽略的就是团队的人员结构。 2、领域职责没有收口,带来很多一致性问题。 领域边界的分歧 3、 Leader的个人能力,决定了他(她)是这个团队的地基还是天花板。 4、 业务领域拆分、基础设施和业务系统分别建设后,给业务快速发展解绑了。但是包括稳定性在内的一系列挑战依然需要面对:   基础设施...