|
![]() | 作者: ljsh012 [ljsh012]
![]() |
登录 |
sqlstr="select * from user where username='"&username&"' and password='"&password&"'" 这个语句中的'"&username&"',其中最外面的''是数据库检索用户名的格式,是不是因为数据库中 的用户名和密码是字符串形式。所以要用''包括起来?而&符号为连接符。为什么要用""把&username&括起来呢?不能直接用"username"吗?不懂。难道是表单中的数据都得用""包括起来。那为何又要一个连接符&.这几个符号真是让人越想越糊涂。 象这种msgbox("你好"&chr(10)&"你好")中的符号就非常让人好懂了。 知者赐教。不甚感激。 俄,是不是这样来理解:sqlstr="select * from user where username='"|&username&|"' and password='"|&password&|"'" 其中|为理解程序的分隔符。是不是?谢谢。 |
地主 发表时间: 04-09-07 22:59 |
![]() | 回复: ljsh012 [ljsh012] ![]() |
登录 |
赫赫,就是最后一种理解方法了。因为符合了一切这种形式的语句。能够讲的通了。 |
B1层 发表时间: 04-09-07 23:14 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
不太懂ASP,但我记得&在这里好像是字符串链接的意思就是把"和username连起来 |
B2层 发表时间: 04-09-07 23:45 |
![]() | 回复: 286 [unique] ![]() |
登录 |
1 sql命令中,字符串要用''括起来。 sqlstr="select * from user where username='unique' and password='12345'" 这个能看懂吧? sqlstr="select * from user where username=unique and password=12345" 是不对的。 2 把&换成+,这样成了。 sqlstr="select * from user where username='"+username+"' and password='"+password+"'" 能看懂吧? &在这里就是+的意思。 |
B3层 发表时间: 04-09-08 09:40 |
![]() | 回复: windflower [windflower] ![]() |
登录 |
sqlstr="select * from user where username='"&username&"' and password='"&password&"'" &只是字符串连接运算符。 "select * from user where username='" 连接 "username " 连接 " ' and password='" 连接 "password" 连接 " '" 当把两个以上的字符串连接时就用&,当然 &操作符两边必然是字符串,字符串要用左右两个双引号括起来这你知道。 |
B4层 发表时间: 04-09-08 12:25 |
![]() | 回复: qiezic [qiezic] ![]() |
登录 |
好象+是连接同类型的变量! 而&则可以把不同类型的变量连接在一起! |
B5层 发表时间: 04-09-08 13:56 |
![]() | 回复: ljsh012 [ljsh012] ![]() |
登录 |
多谢楼上的兄弟们了。 其实这个我现在已经很清晰了。起初只是因把第一个"和末尾的"匹配起来了,即看作了一对。所以在这个前提下看那个语句就越看越不对。第一个"不应该和最后一个"匹配的。 至于楼上有位说的当连接俩个以上的字符串时就用&,不太准确。当是同一种字符串时就不用这么麻烦了。比如select * from user 之间没必要用&来连接的。显得多余了。而只需当字符串要和变量连接时才有这个必要。常量字符串是要用""包括起来的。至于变量就不需要了。要了就成一般的字符串了。 而我想问286大哥一点的是。数据库语言中为何要用''包括用户名和密码呢?因为数据库中存储的是字符串?但为什么当通过mssql 2000中的sa空口令获得执行系统权限时,当我用echo "hello my friend" >c:\a.txt执行dos命令时,""怎么也提交不进去。为什么啊?困惑好久了。谢谢。 |
B6层 发表时间: 04-09-08 19:01 |
![]() | 回复: 286 [unique] ![]() |
登录 |
任何一个语言都有自己的语法,SQL就是这样规定,对于字符串用单引号括起.这是规定.又比如FOXPRO可以用[]括,C语言则只能用""括,''括表示是字符而不是字符串,你记住就行了.另外不是用''括用户名和密码,而是只要是字符串都用.否则 a=123,123是字符中还是数呢?就分不清了. echo "hello my friend" >c:\a.txt在DOS中是正确的语法,但你在SQLSERVER中,有些命令SQL并不能成功解释,所以执行也就不一定正确了.另外你这种命令是在那里执行呢?是在DOS环境,还是TELNET环境,不同环境也不会完全一样.(我有解释仅是我的理解,仅供参考) |
B7层 发表时间: 04-09-09 09:15 |
![]() | 回复: ljsh012 [ljsh012] ![]() |
登录 |
这个命令是在一个能够通过sa空口令获取cmd shell的软件中执行的。它是通过sql2000种的_xpcmdshell这个存储过程(是存储过程吧?忘了)来执行的,我想也就是一切命令首先得经过sql2000处理后才才能提交到系统。而碰巧就是""提交不进去。难道是这个软件的缺点。不太会吧? 我说的不一定对。知者赐教。谢谢。同时谢谢286。 |
B8层 发表时间: 04-09-09 13:20 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号