解决ASP执行DB查询中的特殊字符问题

2016-01-29 18:55 5 1 收藏

解决ASP执行DB查询中的特殊字符问题,解决ASP执行DB查询中的特殊字符问题

【 tulaoshi.com - ASP 】

 

作者:csbq

  在进行数据库的查询时,会经常遇到这样的情况:
  例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,“|”号,双引号或者连字符“&”。

  例如他的名字是1'test,密码是A|&900,这时当你执行以下的查询语句时,肯定会报错:
  SQL = "SELECT * FROM SecurityLevel WHERE UID='" & UserID & "'"
  SQL = SQL & " AND PWD='" & Password & "'"

  因为你的SQL将会是这样:
  SELECT * FROM SecurityLevel WHERE UID='1'test' AND PWD='A|&900'

  在SQL中,"|"为分割字段用的,显然会出错了。现在提供下面的几个函数,专门用来处理这些头疼的东西:
Function ReplaceStr (TextIn, ByVal SearchStr As String, _

  ByVal Replacement As String, _

  ByVal CompMode As Integer)

  Dim WorkText As String, Pointer As Integer

If IsNull(TextIn) Then

  ReplaceStr = Null

Else

  WorkText = TextIn

  Pointer = InStr(1, WorkText, SearchStr, CompMode)

Do While Pointer 0

  WorkText = Left(WorkText, Pointer - 1) & Replacement & _

  Mid(WorkText, Pointer + Len(SearchStr))

  Pointer = InStr(Pointer + Len(Replacement), WorkText, _

  SearchStr, CompMode)

Loop

  ReplaceStr = WorkText

End If

End Function

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)


Function SQLFixup(TextIn)

  SQLFixup = ReplaceStr(TextIn, "'", "''", 0)

End Function

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)


Function JetSQLFixup(TextIn)

  Dim Temp

  Temp = ReplaceStr(TextIn, "'", "''", 0)

  JetSQLFixup = ReplaceStr(Temp, "|", "' & chr(124) & '", 0)

End Function

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)


Function FindFirstFixup(TextIn)

  Dim Temp

  Temp = ReplaceStr(TextIn, "'", "' & chr(39) & '", 0)

  FindFirstFixup = ReplaceStr(Temp, "|", "' & chr(124) & '", 0)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)

End Function

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)


  有了上面几个函数后,当你在执行一个sql前,请先使用:
  SQL = "SELECT * FROM SecurityLevel WHERE UID='" & SQLFixup(UserID) & "'"
  SQL = SQL & " AND PWD='" & SQLFixup(Password) & "'"

 

来源:https://www.tulaoshi.com/n/20160129/1507772.html

延伸阅读
标签: SQLServer
  只要使用with (nolock)即可! SELECT au_lname FROM authors WITH (NOLOCK)  
标签: Web开发
在我开发BS结构程序中,由于经常需要在ORACLE中处理一些容量较大的文本数据,所以经过反复测试终于用ASP成功解决了大文本数据在ORACLE下存取问题。 一、运行环境: 1、Microsoft Windows 2000 Server + IIS 5.0 2、Oracle8i中文标准版 二、建立数据表: CREATE TABLE SYSTEM.TEST( BLOB LONG, ID NUMBER) / ...
标签: Web开发
你可以在JavaScript中使用反斜杠来向文本字符串添加特殊字符。 插入特殊字符 反斜杠用来在文本字符串中插入省略号、换行符、引号和其他特殊字符。 请看下面的JavaScript代码: var txt="We are the so-called "Vikings" from the north."document.write(txt) 在JavaScript中,字符串使用单引号或者双引号来起始或者结束。这意味着上面的...
标签: Web开发
我对PHP的正则表达式不太熟悉      在使用eregi_replace()函数时发现带有()的字符串不能进行替换,看了手册还是糊里糊涂      比如      将   DIN   1693(Pt.2)-1997   加粗      使...
我在写一个查询条件时的问题如下: 如我想写一个字段中包含“李”字的所有记录 ?$str="李"; select * from table where field like ''%?$str%'' ; 显示的记录中除了包含”李”字的记录,还有不包含“李”字的记录。为什么? 在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在MySQL的很...

经验教程

567

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部