zoukankan      html  css  js  c++  java
  • php插入数据含有特殊符号的处理方法

    我们在向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;
    复制代码
  • 相关阅读:
    C语言-if语句
    C语言-表达式
    C语言-基础
    Java for LeetCode 187 Repeated DNA Sequences
    Java for LeetCode 179 Largest Number
    Java for LeetCode 174 Dungeon Game
    Java for LeetCode 173 Binary Search Tree Iterator
    Java for LeetCode 172 Factorial Trailing Zeroes
    Java for LeetCode 171 Excel Sheet Column Number
    Java for LeetCode 169 Majority Element
  • 原文地址:https://www.cnblogs.com/lvcha/p/3443358.html
Copyright © 2011-2022 走看看