如题,我用的是PERL+DBI连接MYSQL,但是一旦输入单引号就会SQL语法错误,请问何解?前面加斜杠和用QUOTE方法我都试了,还是不行~

解决方案 »

  1.   

    试试使用两个单引号表示一个单引号
    比如'' 表示'或者用char(39)
      

  2.   

    如果要输入'你好',用insert into a(ch) values("'你好'"); 
    如果要输入"你好",用insert into a values('"你好"') ;
      

  3.   

    如果要输入'你好',用insert into a(ch) values("'你好'"); 
    如果要输入"你好",用insert into a(ch) values('"你好"') ;
      

  4.   

    在MySQL中
    是用 \ 作为转义符的
      

  5.   

    MySQL识别下列转义字符: \0 
    一个ASCII 0 (NUL)字符。 
    \n 
    一个新行符。 
    \t 
    一个定位符。 
    \r 
    一个回车符。 
    \b 
    一个退格符。 
    \' 
    一个单引号(“'”)符。 
    \" 
    一个双引号(“"”)符。 
    \\ 
    一个反斜线(“\”)符。 
    \% 
    一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。 
    \_ 
    一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。 
    注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。 有几种方法在一个字符串内包括引号: 一个字符串内用“'”加引号的“'”可以被写作为“''”。 
    一个字符串内用“"”加引号的“"”可以被写作为“""”。 
    你可以把一个转义字符(“\”)放在引号前面。 
    一个字符串内用“"”加引号的“'”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“'”加引号的与“"”也不需要特殊对待。 
    下面显示的SELECT演示引号和转义如何工作: mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
    +-------+---------+-----------+--------+--------+
    | hello | "hello" | ""hello"" | hel'lo | 'hello |
    +-------+---------+-----------+--------+--------+mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
    +-------+---------+-----------+--------+--------+
    | hello | 'hello' | ''hello'' | hel"lo | "hello |
    +-------+---------+-----------+--------+--------+mysql> SELECT "This\nIs\nFour\nlines";
    +--------------------+
    | This
    Is
    Four
    lines |
    +--------------------+
     
    如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示: NUL 
    ASCII 0。你应该用'\0'(一个反斜线和一个ASCII '0')表示它。 

    ASCII 92,反斜线。用'\\'表示。 

    ASCII 39,单引号。用“\'”表示。 

    ASCII 34,双引号。用“\"”表示。
      

  6.   

    答案已经在perl区找到,谢谢各位!