mySql 3.51中insert语句问题 由于这个版本是不支持参数和存储过程的。现在插入数据,只能拼sql.那么当遇到要插入的数据带有单引号,或双引号的时候,就会出现异常。除了单引号和双引号,还有哪些符号是需要替换的?要替换成什么?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 需要转义,请看下面。在字符串中,某些序列具有特殊含义。这些序列均用反斜线(‘\’)开始,即所谓的转义字符。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’。‘\%’和‘\_’序列用于搜索可能会解释为通配符的模式匹配环境中的‘%’和‘_’文字实例。参见12.3.1节,“字符串比较函数”。请注意如果你在其它环境中使用‘\%’或‘\_’,它们返回字符串‘\%’和‘\_’,而不是‘%’和‘_’。在其它转义序列中,反斜线被忽略。也就是说,转义字符解释为仿佛没有转义。有几种方式可以在字符串中包括引号:· 在字符串内用‘'’引用的‘'’可以写成‘''’。· 在字符串内用‘"’引用的‘"’可以写成‘""’。· 可以在引号前加转义字符(‘\’)。· 在字符串内用‘"’引用的‘'’不需要特殊处理,不需要用双字符或转义。同样,在字符串内用‘'’引用的‘"’也不需要特殊处理。 mysql> select "'b'";+-----+| 'b' |+-----+| 'b' |+-----+1 row in set (0.00 sec)mysql> select '"b"';+-----+| "b" |+-----+| "b" |+-----+1 row in set (0.00 sec)mysql>就这个意思吧。 ok.那么综上就是单引号,双引号,反斜杠,百分号,下划线转义一下就可以了吧。因为是临时改的程序,机上没有mysql3.51的环境。谢谢 #1楼 zuoxingyu(差400分上北大) 正解。 具体你可以参考一下手册MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html mysql 求时间差的总和 这个SQL语句 怎么写? 关于join mysql的字段拆分问题 MySQL 优化问题 ? MySql中插入汉字 利用MYODBC ASP 连接MYSQL时报错,望高手解答 linux 9.0下安装mysql4.0.16了,但不知配置文件(my.cnf)安装到哪去了 postgreSQL中 group by 日期的问题 mySql中没有和SQL Server中一样的Schema功能啊? DATETIME类型的问题 RSS订阅添加到数据库,如何覆盖原先的数据?
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’。‘\%’和‘\_’序列用于搜索可能会解释为通配符的模式匹配环境中的‘%’和‘_’文字实例。参见12.3.1节,“字符串比较函数”。请注意如果你在其它环境中使用‘\%’或‘\_’,它们返回字符串‘\%’和‘\_’,而不是‘%’和‘_’。在其它转义序列中,反斜线被忽略。也就是说,转义字符解释为仿佛没有转义。有几种方式可以在字符串中包括引号:· 在字符串内用‘'’引用的‘'’可以写成‘''’。· 在字符串内用‘"’引用的‘"’可以写成‘""’。· 可以在引号前加转义字符(‘\’)。· 在字符串内用‘"’引用的‘'’不需要特殊处理,不需要用双字符或转义。同样,在字符串内用‘'’引用的‘"’也不需要特殊处理。
mysql> select "'b'";
+-----+
| 'b' |
+-----+
| 'b' |
+-----+
1 row in set (0.00 sec)mysql> select '"b"';
+-----+
| "b" |
+-----+
| "b" |
+-----+
1 row in set (0.00 sec)mysql>
就这个意思吧。
因为是临时改的程序,机上没有mysql3.51的环境。谢谢
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html