user 和 \user 相等??

pengwjeagles 2006-04-27 01:31:18
我的数据表 是company

有个字段 是username 是varchar类型的
我在mysql 里执行 select * from company where username="name"; 和 select * from company where username="\name";
得到相同的结果。不知道是什么问题?怎么解决这个问题?
...全文
156 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mathematician 2006-04-28
  • 打赏
  • 举报
回复
\是mysql的特殊字符,对可能输入特殊字符的文本框都要做特别处理,php可以用addslashes函数处理一下传递过来的变量就可以了,jsp自己查查手册吧!
很多地方都需要用这种函数处理,比如字符串中含有',",等,如果不处理肯定就要出问题,呵呵!
pengwjeagles 2006-04-27
  • 打赏
  • 举报
回复
我的版本是5.0.18
那换个版本吧!
hy2003fly 2006-04-27
  • 打赏
  • 举报
回复
你的mysql版本是多少,我的是5.0.19就没有这个问题,你换个版本试试看
mysql> use bookshop;
Database changed
mysql> select name from user where name='tom';
+------+
| name |
+------+
| tom |
+------+
1 row in set (0.01 sec)

mysql> select name from user where name='\tom';
Empty set (0.00 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.19-nt |
+-----------+
1 row in set (0.02 sec)
pengwjeagles 2006-04-27
  • 打赏
  • 举报
回复
我的意思是这样的 我做的jsp 页面登录之后 或者字符串,然后查询。
select * from user where username="peng";//peng 是从登录页面传过来的字符串。
现在是数据库里有一个叫peng的用户。 如果用户输入 peng 能查到。但是现在用户输入\peng
也是同样能登录。应该用户输入\peng是查不到数据的。这里是我对用户输入再作判断吗?
但是我直接在mysql里执行 select * from user where username="\peng"; 它查出来的结果就是peng的结果。

mathematician 2006-04-27
  • 打赏
  • 举报
回复
网页做特殊字符转换,比如php可以用addslashes函数。
XqYuan 2006-04-27
  • 打赏
  • 举报
回复
把\替换成\\
pengwjeagles 2006-04-27
  • 打赏
  • 举报
回复
我这里做的是用户管理 如果用户注册的是name 但是他在登录框里填 \name
他也能正常登录。这里怎么处理呢
mathematician 2006-04-27
  • 打赏
  • 举报
回复
\是mysql的转义字符,可以用\\代替

select * from company where username="\\name";

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧