发现问题
当我们在向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()
。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。