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

  次阅读 作者:智能小宝 来源:互联网 2016-03-01 13:14 我要评论(0)

首先接受一个概念:asp中只承认双引号,Access SQL中只承认单引号,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 "Insert Into GuestBook (name) VALUES (’" & name &"’)"

%>

如果我们提交的name为 Jacky, 则上面的SQL语句为 Insert Into GuestBook (name) VALUES (’Jacky’),很明显,这样符合我们的本意。

可是,如果我们提交的是 I’m Jacky, 则上面的语句变为 Insert Into GuestBook (name) VALUES (’I’m Jacky’), 然后,不幸的事情发生了,系统找到的第一个单引号是I’m中的单引号,于是系统认为用户想提交的字符串(包括引号)仅仅只是’I’.接下来的 m Jacky’) 系统就无法解释了,于是就认为你的语法错了。

如何解决呢?那就是再进行数据库处理前先将一个单引号替换为两个单引号,让系统将其解释为转义字符,代码如下:

<%

name = Request.Form("name")

name = Replace(name, "’", "’’")//即 name = Replace(name, chr(39), chr(39)&chr(39))

Conn.Execute "Insert Into GuestBook (name) VALUES (’" & name &"’)"

%>

再提交 I’m Jacky, SQL语句变为 Insert Into GuestBook (name) VALUES (’I’’m Jacky’), 在写入数据的时候,SQL会自动识别出两个单引号的转义字符,从而最终写入数据库的数据则为 I’m Jacky ,这就是我们所期待的正确结果。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...