我的电脑上是安装的PHPnow里面带的PHP和MYSQL
在我电脑上把字符存入数据库的时候,不需要用addslashes()把单引号等东西转移,但是我的虚拟机里面却不能存储单个的引号,需要用addslashs()添加反斜杠才行
这个是版本问题还是哪儿可以设置??

解决方案 »

  1.   

    没看明白楼主的意思。转义字符是这样的:在字符串中,某些序列具有特殊含义。这些序列均用反斜线(‘\’)开始,即所谓的转义字符。MySQL识别下面的转义序列:\0 
     ASCII 0(NUL)字符。
     
    \' 
     单引号(‘'’)。
     
    \" 
     双引号(‘"’)。
     
    \b 
     退格符。
     
    \n 
     换行符。
     
    \r 
     回车符。
     
    \t 
     tab字符。
     
    \Z 
     ASCII 26(控制(Ctrl)-Z)。该字符可以编码为‘\Z’,以允许你解决在Windows中ASCII 26代表文件结尾这一问题。(如果你试图使用mysql db_name < file_name,ASCII 26会带来问题)。
     
    \\ 
     反斜线(‘\’)字符。
     
    \% 
     ‘%’字符。参见表后面的注解。
     
    \_ 
     ‘_’字符。参见表后面的注解。
     这些序列对大小写敏感。例如,‘\b’解释为退格,但‘\B’解释为‘B’。
      

  2.   

    贴出你的SQL语句,还有错误提示。
      

  3.   


    $name="你'好";
    $txt="你'好";
    $sql="insert into `topic` (`name`,`txt`,`time`) values ('$name','$txt','".time()."')";
    if(mysql_query($sql,$data->conn)){
    echo "发帖成功!";
    }else{
    echo "发帖失败!<br/>";
    }上面的代码中,$name和$txt都含有一个',在我自己的电脑上,执行上面的代码后,就提示“发帖成功”;但是在虚拟主机中提示“发帖失败”;没有错误提示。后来,我把代码改成这样:$name=addslashes("你'好");
    $txt=addslashes(""你'好");
    $sql="insert into `topic` (`name`,`txt`,`time`) values ('$name','$txt','".time()."')";
    if(mysql_query($sql,$data->conn)){
    echo "发帖成功!";
    }else{
    echo "发帖失败!<br/>";
    }在虚拟主机中就能插入了,但是在我的电脑上,插入进数据库的就成这样了:
    你\'好
      

  4.   

    echo $sql;打印出来的分别贴到你的机器和虚拟机执行看看。
      

  5.   

    ; Magic quotes for incoming GET/POST/Cookie data.
    magic_quotes_gpc = Off
    检查一下php的配置文件php.ini 默认上面的参数是关闭的
    您电脑上的可能是开着的(所以提交的数据不需要手工转义),虚拟主机上的可能是关闭的(所以需要您手工转义)