单引号这个问题昨天还有人讨论,搜索一下吧。HTML特殊符号的问题,写入数据库的时候可以不管,读取/显示的时候htmlspecialchars()一下就可以了

解决方案 »

  1.   

    在php.ini配置文件中有一项
    magic_quotes_gpc=On
    如果该项为On,那它会自动把POST和GET提交的数据自动把'变成\'
      

  2.   

    接收外部数据时
    if(get_magic_quotes_gpc()) {
      $_POST = array_map('stripslashes', $_POST);
    }
    这样就不需考虑magic_quotes_gpc开关的状态,而始终得到未经转义的传
      

  3.   

    第一:我在PHPMYADMIN里面的SQL框里面输入insert into 来插入单引号时会出现致命错误,导致MYSQL数据库服务被停止;第二:我在PHP代码里面通过mysql_query来执行那段insert into的代码时候没有出现任何错误,单引号可以插入,查看数据库里面的相关内容变成了两个单引号。请结合以上现象再重新分析一下好吗?
      

  4.   

    一般服务器都会把配置开关打开....楼主如果不放心,可以每个都加上htmlspecialchars()
      

  5.   

    第一:我在PHPMYADMIN里面的SQL框里面输入insert into 来插入单引号时会出现致命错误,导致MYSQL数据库服务被停止;
    不会出现这样的现象,除非你的phpmyadmin已经损坏了。phpmyadmin不依赖环境运行第二:我在PHP代码里面通过mysql_query来执行那段insert into的代码时候没有出现任何错误,单引号可以插入,查看数据库里面的相关内容变成了两个单引号。
    如果你的magic_quotes_runtime=on就会出现这种情况
      

  6.   

    function add_specialcharacters($query)
       {
       return str_replace("'","''",$query);
       }   function split_specialcharacters($query)
       {
       return str_replace("''","'",$query);
       }
      

  7.   

    问题基本解决,即插入单引号不用做过滤,但是唠叨大哥,我说的第一种情况确实是真的啊,不信你自己试试,直接在phpmyadmin里面写插入记录的SQL语句,插入单引号的时候用 ' ' ',你就会发现MYSQL服务会被关闭掉,得重新启动才能工作。
    SQL示例:
    insert into table(a,b) values('h',''');
      

  8.   

    insert into table(a,b) values('h','\'');
    这是常识
    insert into table(a,b) values('h',''');
    将报语法错!
    但不会导致mysql崩溃
      

  9.   

    尽量减少$_GET传递参数,尽量用$_POST
      

  10.   

    TO xuzuning(唠叨):
    今天又测试了一遍,先建了一test表,然后建了一test字段,然后在PHPMYADMIN里面的写SQL的地方写入以下SQL语句:
    INSERT INTO `test` (`test`) VALUES ('521'');
    结果MYSQL是没死掉,但是APACH死掉了,查看进程时发现APACH的CPU占有一直在100%左右。
    但是这段语句写在我的PHP脚本里面时候使用MYSQL_QUERY函数又能正常的执行,这是怎么回事呢?
      

  11.   

    呵呵,发现更离奇的事情,我直接点PHPMYADMIN里面的插入,然后输入了5个单引号,然后执行,可以正常插入,我看他自动生成的SQL语句里面竟然有12个单引号??按3个算一个单引号的话那么数据库里面的结果应该是插入了4个单引号,但是我查看时发现是5个单引号,这又是怎么回事?
      

  12.   

    我找到答案了
    原因如下:'      ''     ''     ''    ''      ''       '
    这样插入是5个单引号
    真实情况是两本撇开,中间两个算一个,这就是MYSQL插入单引号的奥秘!