可以改为:
$sql = "insert into table(`a`,`b`,`c`) values('$a','$b','$c')";
mssql_query($sql);用“`”符号将字段隔开!
在键盘上的位置是 跟“~”符号在同一键上!

解决方案 »

  1.   

    .如果还不放心的话可以在插值之前对其应用addslashes()函数!
      

  2.   

    mysql_escape_string<?php
        $item = "Zak's Laptop";
        $escaped_item = mysql_escape_string($item);
        printf ("Escaped string: %s\n", $escaped_item);
    ?>
      

  3.   

    直接改了
    $sql = "insert into table(`a`,`b`,`c`) values('".$a."','".$b."','".$c."')";
      

  4.   

    $a = mysql_real_escape_string($a);
    $b = mysql_real_escape_string($b);
    $c = mysql_real_escape_string($c);
    $sql = "insert into table(a,b,c) values('$a','$b','$c')";
      

  5.   

    谢谢大家先.我用的数据库是 mssql啊,所以 mysql_real_escape_string()用不了,而且也没有对mssql的mssql_real_escape_string()函数.
    addslashes()函数我也用过,可问题还是有.比如我的
    $a=***' 那最后它显示的是\',而且同样显示插不进数据库.
    而如果我的$a=***\  那存进去是两\\,读出来的时候并没转义成一个\.
      

  6.   

    addslashes()//这个应该能满足你的需求,
    另一方面也可试试直接替换,
    $a="wh'ywh'ywh'ywh'ywh'ywh'y";
    $p = '/\'/';
    print_r(preg_replace($p, "\\'", $a));
      

  7.   

    字符串'test($b)'之前有未闭合的引号
    preg_replace()函数跟str_replace()差不多吧,我都用过都是那样,
    还有addslashes()是这样用么:
    $sql = "insert into table(`a`,`b`,`c`) values('addslashes($a)','$b','$c')";三军教头又算什么呢,连老婆都没保护好,最后还是落草.......
      

  8.   

    对了,我设置magic_quotes_gpc 为 off的.
    因为看到如果magic_quotes_gpc 为 on的话,用addslashes()会两次转义.
      

  9.   

    1、入库的数据应经过addslashes函数转义
    2、如果magic_quotes_gpc = on,则可不对传入的数据转义。但仍需对非传入的数据转义
    3、addslashes根据magic_quotes_sybase的状态进行转义,默认将“'”转义成“\'”
    当magic_quotes_sybase = On 时,将“'”转义成“''”
    因此在只使用subase系列数据库(sql server、access等)时,应设置magic_quotes_sybase = On
    4、如需要自行编写代码,则
    $a = str_replace("'", "''", $a);