喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: Mysql中“_” 的搜索问题[转]  
 
问题多多 (问题多多)
金牌会员
Rank: 6Rank: 6
高级会员


UID 22184
精华 1
积分 1737
帖子 1759
金钱 1727 喜悦币
威望 10
人脉 0
阅读权限 70
注册 2003-8-2
来自 辽宁-沈阳-和平区
状态 离线
Mysql中“_” 的搜索问题[转]

Mysql中“_” 的搜索问题

--------------------------------------------------------------------------------

真是寒啊~
如果不是 Babyken 的提醒,这个错误我想我还会一直犯下去。

事情起因,帮 Babyken 做了一个 0day 查询的脚本,脚本很简单,就是简单的取用户输入的值做 LIKE 操作查询数据库。做好后经测试一直运行很好。可是今天 Babyken 告诉我说有个BUG,输入 "___" 或 ".__" 等类似的关键字时,会把数据库中的所有记录都取出来。

偶又试了以前写过的几个应用,寒,都有这个问题。。。

看起来是SQL本身对LIKE的处理问题。问了几个朋友也都没有注意过。后来在Mysql手册上找到答案:


Pattern matching using SQL simple regular expression comparison. Returns 1 (TRUE) or 0 (FALSE). With LIKE you can use the following two wildcard characters in the pattern:

Char Description
% Matches any number of characters, even zero characters
_ Matches exactly one character


当时感觉就是汗啊~~ 以前怎么自己就没有注意过呢?

解决办法是把用户的输入中的 _ 和 % 转义。
不知道是只是Mysql有这个问题,还是其它数据也有。希望熟悉其它数据库应用的朋友试一下。

相关Mysql说明页面:http://www.mysql.com/doc/en/String_comparison_functions.html


2004年1月16日22时25分补记:
与xdanger探讨后发现,目前网上大部分的PHP+Mysql程序都存在此BUG,IPB和PHPBB也不例外,VBB中被过滤掉了。看起来这应该是一个值得引起重视的问题了。




PHP C++ MFC JAVA STRUCS MYSQL APACHE LINUX WINDOWS Freebsd Zend JQuery QA
2004-12-16 11:23 PM#1
查看资料  Blog  发短消息  顶部
 
bralf (bralf)
金牌会员
Rank: 6Rank: 6
九代赤贫


UID 14191
精华 0
积分 2546
帖子 2626
金钱 2546 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2002-5-10
来自 旮旯
状态 离线
[推荐阅读] 为什么客户端不能通过ip访问mysql数据库服务器?
共勉之
2004-12-17 03:11 PM#2
查看资料  发短消息  QQ . .   顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.027485 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP