ホームページ > php教程 > php手册 > php提交表单内容有单引号,mysql执行时遇见错误的解决方法。

php提交表单内容有单引号,mysql执行时遇见错误的解决方法。

WBOY
リリース: 2016-06-06 19:59:50
オリジナル
1472 人が閲覧しました

首先看一下问题所在。 INSERT INTO tg_article( tg_username, tg_type, tg_title, tg_content, tg_date ) VALUES( '{$_clean['username']}', '{$_clean['type']}', '{$_clean['title']}', '{$_clean['content']}', NOW() ) 大家会发现党要提交的内容还有单引

首先看一下问题所在。

"INSERT INTO tg_article(
                                        tg_username,
                                        tg_type,
                                        tg_title,
                                        tg_content,
                                        tg_date
                                      )
                                VALUES(       
                                        '{$_clean['username']}',
                                        '{$_clean['type']}',
                                        '{$_clean['title']}',
                                        '{$_clean['content']}',
                                        NOW()                                                                              
                                       )                     
  "

大家会发现党要提交的内容还有单引号的时候,value是里面就会出现单引号套单引号,这是明显的错误,这也是在网站开发中经常遇到的现象和易忽略的问题。接下来给大家讲怎么解决。


1. 对于magic_quotes_gpc=on的情况,

我们可以不对输入和输出数据库的字符串数据作

addslashes()和stripslashes()的操作,数据也会正常显示。
如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。
2. 对于magic_quotes_gpc=off 的情况
必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。

创建一个转义函数,并对内容转义

function _mysql_string($_string){
    //get_magic_quotes_gpc()如果开启状态就不用转义,否则要z转义
  //  if(!GPC){
       // return @mysql_escape_string($_string);
   // }else{ 
        //return $_string;
   // }
    if(GPC){
        if(is_array($_string)){
            foreach ($_string as $_key=>$_value){
                $_string[$_key] = _mysql_string($_value);
                $_string[$_key] = addslashes($_string[$_key]);
            }
        }else{
            $_string = @mysql_real_escape_string($_string);
        }
    }      	
        return $_string;
}
ログイン後にコピー

 //接受内容
        $_clean = array();
        $_clean['username'] = $_COOKIE['username'];
        $_clean['type'] = $_POST['type'];
        $_clean['title'] = $_POST['title'];
        $_clean['content'] = $_POST['content'];
        _mysql_string($_clean);
ログイン後にコピー



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート