数据库查询中的特殊字符的问题

原创 2003年01月02日 09:16:00

##### 版权所有 转载请保留 谢谢合作 
##### 作者:欧阳东杰
##### Email: admin@xzsky.com
##### QQ: 7462792
##### WebSite: www.xzsky.com

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

PHP对表单提交特殊字符的过滤和处理

转载自:PHP对表单提交特殊字符的过滤和处理 函数名  释义  介绍 htmlspecialchars 将与、单双引号、大于和小于号化成HTML格式 &转成&...
  • qq_15096707
  • qq_15096707
  • 2016年06月12日 21:31
  • 1167

Java与Mysql开发中的特殊字符(包括Emoji)

背景知识  emoji表情符号,是20世纪90年代由NTT Docomo栗田穣崇(Shigetaka Kurit)创建的,词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)。emoj...
  • Lane0x
  • Lane0x
  • 2015年11月14日 12:13
  • 1775

C#数据库操作特殊字符单引号三种处理方式

方法一:转义字符 使用单引号作为转义字符,即连续使用两个单引号。 select * from jq_jjjl where bt like '%女子''%' 上述代码会匹配jq_jjjl表中所有bt字...
  • kingzone_2008
  • kingzone_2008
  • 2013年04月18日 21:47
  • 11234

HPUX特殊字符密码问题

  • 2012年07月19日 09:58
  • 26KB
  • 下载

SQL数据库对于保存特殊字符的解决办法

例如: “基础教育课程手机报•特刊” == 》 “基础教育课程手机报?特刊” 解决办法是将字段改成NChar,NVarchar等类型,在入库的时候每个字符串插入前都加入一个N,如N’lily’、...
  • qq736150416
  • qq736150416
  • 2017年12月27日 11:22
  • 99

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符,可使用本函数来预防数据库攻击。

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符,可使用本函数来预防数据库攻击。PHP mysql_real_escape_string() 函数...
  • xinwu246810
  • xinwu246810
  • 2015年05月04日 09:30
  • 283

C#数据库操作特殊字符单引号三种处理方式

方法一:转义字符 使用单引号作为转义字符,即连续使用两个单引号。 select * from jq_jjjl where bt like '%女子''%' 上述代码会匹配jq_jjjl表中所有bt字...
  • kingzone_2008
  • kingzone_2008
  • 2013年04月18日 21:47
  • 11234

解决PHP服务端返回json字符串有特殊字符的问题

1. 问题描述在调用PHP后台接口发现后台接口返回的json字符串Gson一直解析不通过:List districts = null; if (!TextUtils.isEmpty(m...
  • lue2009
  • lue2009
  • 2015年07月08日 10:17
  • 2794

完美解决QQ空间背景音乐中不能输入如"="等特殊字符问题

我们在免费添加QQ空间背景音乐的时候,需要能在线试听的歌曲链接地址,由于QQ空间对歌曲的地址要求比较严格,有等号的歌曲地址是不能添加在空间的,当然一般的都是再换一首歌曲试听,能找到有用的链接更好,如果...
  • iloli
  • iloli
  • 2012年01月12日 19:02
  • 986

linux串口接收0x03等特殊字符的问题

近日在写一个linux的串口程序,发现大多数情况下数据接收没问题,但是有时却有问题。主要是接收的字符串中包含有0x03这个字符,会造成与它相邻的字符同时也接收不到,搞了好久才发现这个错误。查找资料后发...
  • yangbingzhou
  • yangbingzhou
  • 2014年09月24日 10:53
  • 2668
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库查询中的特殊字符的问题
举报原因:
原因补充:

(最多只允许输入30个字)