欢迎光临
我们一直在努力

数据库查询中的特殊字符的问题-ASP教程,数据库相关

建站超值云服务器,限时71元/月

在进行数据库的查询时,会经常遇到这样的情况:

  例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,“|”号,双引号或者连字符“&”。

  例如他的名字是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

function sqlfixup(textin)

 sqlfixup = replacestr(textin, """, """", 0)

end function

function jetsqlfixup(textin)

 dim temp

 temp = replacestr(textin, """, """", 0)

 jetsqlfixup = replacestr(temp, "|", "" & chr(124) & "", 0)

end function

function findfirstfixup(textin)

 dim temp

 temp = replacestr(textin, """, "" & chr(39) & "", 0)

 findfirstfixup = replacestr(temp, "|", "" & chr(124) & "", 0)

end function

  有了上面几个函数后,当你在执行一个sql前,请先使用

sql = "select * from securitylevel where uid="" & sqlfixup(userid) & """

sql = sql & " and pwd="" & sqlfixup(password) & """

原理也不难,但我总觉得是不是麻烦?有没有更好的方法?要么我想用javascript控制不使用这些符号。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 数据库查询中的特殊字符的问题-ASP教程,数据库相关
分享到: 更多 (0)