mysql> insert into tests (users) values ('''');
Query OK, 1 row affected (0.00 sec)mysql> select * from tests;
+-------+--------+
| users | passwd |
+-------+--------+
| '     |        |
+-------+--------+
1 row in set (0.01 sec)

解决方案 »

  1.   

    用反斜杠
    insert into tests (users) values ('\'');
      

  2.   

    同意楼上的,用反斜杠
    php 有专门的addslashes和stripslashes两个函数来给特殊字符加上或者去掉反斜杠\
      

  3.   

    MySQL是用  \ 来转意的
      

  4.   

    MySQL识别下列转义字符: \0 
    一个ASCII 0 (NUL)字符。 
    \n 
    一个新行符。 
    \t 
    一个定位符。 
    \r 
    一个回车符。 
    \b 
    一个退格符。 
    \' 
    一个单引号(“'”)符。 
    \" 
    一个双引号(“"”)符。 
    \\ 
    一个反斜线(“\”)符。 
    \% 
    一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。 
    \_ 
    一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。 
      

  5.   

    我是说要防止特殊字符导致sql报错。
    单引号只是其中之一,还有没有别的特殊字符需要转换的?
    我用jsp+mysql.