php插入数据含有特殊符号的处理方法
2016-08-08 18:30
351 查看
转自:http://www.cnblogs.com/lvcha/archive/2013/11/26/3443358.html
我们在向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()。
最后举例:
代码
//提交数据,或者变量准备:
$Content=addslashes(”这里面是数据,不管有没单引号或者还是变量”);
//插入数据到数据库,代码省略
//开始显示数据
$Content=”从数据库读取的数据”;
if(get_magic_quotes_gpc()){
$Content=stripslashes($Content);
}
echo $Content;
我们在向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()。
最后举例:
代码
//提交数据,或者变量准备:
$Content=addslashes(”这里面是数据,不管有没单引号或者还是变量”);
//插入数据到数据库,代码省略
//开始显示数据
$Content=”从数据库读取的数据”;
if(get_magic_quotes_gpc()){
$Content=stripslashes($Content);
}
echo $Content;
相关文章推荐
- php插入数据含有特殊符号的处理方法
- php插入含有特殊符号数据的处理方法
- php插入含有特殊符号数据的处理方法
- xml文档里含有特殊字符时的处理方法(php)
- AJAX处理 POST数据中有特殊符号导致数据丢失的解决方法
- AJAX POST数据中有特殊符号处理方法
- php处理字符串,判断是否含有特殊符号,非中文,数字,字符
- php+mysql计算某个已知经纬度周围几公里数据查询处理方法
- 简单实例处理url特殊符号&处理(2种方法)
- PHP插入数据到Mysql出现乱码的解决方法
- PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
- window.showModalDialog参数传递中含有特殊字符的处理方法
- php oci8.dll 插入数据到oracle数据库 php操作oracle数据库 亲测 ORA-00911 无效字符错误解决方法
- javascript插入下拉框的数据 &&通过javascript传参PHP方法
- 用php处理百万级以上的数据提高查询速度的方法
- PHP复杂检索数据并分页显示的处理方法
- 关于特殊符号的处理方法
- php向MySQL插入数据不全 解决方法
- jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
- 简单实例处理url特殊符号&处理(2种方法)