您当前的位置: 首页 > 网站编程 > ASP教程 > asp和SQL语法中引号的使用方法

asp和SQL语法中引号的使用方法

作者:不详 来源:网络 发布时间: 2010-08-09 23:06 点击:
首先接受一个概念:asp中只承认双引号,AccessSQL中只承认单引号,HTML由于其不严谨,单双引号都承认。以上是我的一点经验总结,最终正确性还有待证实。 在asp中,要输出一个双引号,需要使用转义字符:两个双引号()。 例如, 要输出字符串abc,则response.write(abc)

asp和SQL语法中引号的使用方法

  首先接受一个概念:asp中只承认双引号,AccessSQL中只承认单引号,HTML由于其不严谨,单双引号都承认。以上是我的一点经验总结,最终正确性还有待证实。
  
  在asp中,要输出一个双引号,需要使用转义字符:两个双引号("")。
  
  例如,
  
  要输出字符串abc,则response.write("abc")
  
  要输出字符串"abc,则response.write("""abc")//两边的双引号括起,表示内部为一个字符串。终于剩余两个双引号,转义输出为一个双引号。
  
  要输出字符串ab"c,则response.write("ab""c")
  
  要输出一个双引号",则response.write("""")//这就是解释了为什么要写四个双引号了
  
  此外,还有另外一种方法,就是使用ACSII字符
  
  例如,
  
  要输出ab"c,则response.write("ab"&chr(34)&"c")
  
  接下来,让我们再看看SQL中的单引号问题。我们考虑这个问题,主要是为了允许自己在进行字符串数据库处理的时候不至于出错,和防止SQL注入。
  
  来看看最简单的SQL注入,有一个留言板,其表单有一个name项。
  
  在目标页面,有如下代码:
  
  <%
  
  name=Request.Form("name")
  
  Conn.Execute"InsertIntoGuestBook(name)VALUES(’"&name&"’)"
  
  %>
  
  如果我们提交的name为Jacky,则上面的SQL语句为InsertIntoGuestBook(name)VALUES(’Jacky’),很明显,这样符合我们的本意。
  
  可是,如果我们提交的是I’mJacky,则上面的语句变为InsertIntoGuestBook(name)VALUES(’I’mJacky’),然后,不幸的事情发生了,系统找到的第一个单引号是I’m中的单引号,于是系统认为用户想提交的字符串(包括引号)仅仅只是’I’.接下来的mJacky’)系统就无法解释了,于是就认为你的语法错了。
  
  如何解决呢?那就是再进行数据库处理前先将一个单引号替换为两个单引号,让系统将其解释为转义字符,代码如下:
  
  <%
  
  name=Request.Form("name")
  
  name=Replace(name,"’","’’")//即name=Replace(name,chr(39),chr(39)&chr(39))
  
  Conn.Execute"InsertIntoGuestBook(name)VALUES(’"&name&"’)"
  
  %>
  
  再提交I’mJacky,SQL语句变为InsertIntoGuestBook(name)VALUES(’I’’mJacky’),在写入数据的时候,SQL会自动识别出两个单引号的转义字符,从而最终写入数据库的数据则为I’mJacky,这就是我们所期待的正确结果。

分享到:
本文"asp和SQL语法中引号的使用方法"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4