为什么rs("xxx")和Request("xxx")打印出来相同,比较却不同呢?

nasi00 2004-01-10 11:56:12
比如我有一个Access数据库,里面有一个test的表,里面有几个数据。

然后我写了一个test.asp:
<%@ language = jscript %>
<%
var conn=Server.CreateObject("adodb.connection");
var dbpath=Server.MapPath("t.mdb");
conn.Open("driver={microsoft access driver (*.mdb)};dbq="+dbpath);

var rs=conn.Execute("select * from test");
var id1=Request("id");
var id2=rs("test_id");
Response.Write(id1);
Response.Write("<br>");
Response.Write(id2);
Response.Write("<br>");
if(id1==id2) Response.Write("Yes"); else Response.Write("No");
%>

并且用ie调用(http://localhost/test.asp?id=1):
这时候,显示的是:
1
1
No

为什么都是1,比较的结果却是No呢?
...全文
235 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfzx 2004-01-15
  • 打赏
  • 举报
回复
100%是数据库里面的空格问题,加一个trim()就可以解决
lonaerd 2004-01-15
  • 打赏
  • 举报
回复
肯定是类型问题了,我遇到过的
xieyj 2004-01-15
  • 打赏
  • 举报
回复
类型或有空格问题:使用 clng(trim(rs("id")))
nasi00 2004-01-15
  • 打赏
  • 举报
回复
test_id在access中是自动编号,应该是int吧
mikespook 2004-01-14
  • 打赏
  • 举报
回复
string 也是 object。

VBS 实际上是一中基于对象的语言~~~~理解了这点你就会明白为什么类型是object了~~~


我认为应该是类型的缘故
问你一个问题

test_id

在你的数据库中是什么类型的数据?CHAR?INT?MEMO?ENUM?
nasi00 2004-01-14
  • 打赏
  • 举报
回复
是不是object类型的就不能使用==比较,要转换成string的才可以呢?
nasi00 2004-01-12
  • 打赏
  • 举报
回复
用typeof()看了,rs("...")和Request("...")的类型是一样的,都是object。而且打印出来又是一样的,就是想不通为什么用==比较会得到不相等的结果。 -_-b
nchen123 2004-01-12
  • 打赏
  • 举报
回复
转换为 int 再比较
luoluonet 2004-01-12
  • 打赏
  • 举报
回复
typeof()函数看看类型不就知道了~
nasi00 2004-01-12
  • 打赏
  • 举报
回复
众说纷纭阿,到底是不是类型的问题呢?
nasi00 2004-01-11
  • 打赏
  • 举报
回复
哦,那么如果数据库里的某一个比如test_title是文本型的,那么rs("test_title")是字符串吗?
用比较仍然得到否定的结果啊
Request()得到的总是字符串是吗?
pimple 2004-01-11
  • 打赏
  • 举报
回复
var id1=Request("id");'字符串
var id2=rs("test_id");'整形吧?
是数据类型不一样.
jiangjiewebsky 2004-01-11
  • 打赏
  • 举报
回复
数据类型不同.
Request("id") //字符型
var id1=Cint(Request("id"))试试
cdsun 2004-01-11
  • 打赏
  • 举报
回复
用<>
swlswl27 2004-01-11
  • 打赏
  • 举报
回复
为什么要有空格呢?应该是数据类型不一要,一个是字符串,一个是整型。若想它们相等就这样:
id1=parseInt(Request("id"));
nasi00 2004-01-11
  • 打赏
  • 举报
回复
比如开始我举的例子吧,输出以后察看源文件就是

1<br>1<br>No

就是说,应该是没有多余的空格的,难道说Response.Write()在输出的时候把空格给“过滤”掉了?
xelibri 2004-01-11
  • 打赏
  • 举报
回复
同意cloudchen,应该是有空格

相等运算符 (==、!=)

如果两表达式的类型不同,则试图将它们转换为字符串、数字或 Boolean 量。
NaN 与包括其本身在内的任何值都不相等。
负零等于正零。
null 与 null 和 undefined 相等。
相同的字符串、数值上相等的数字、相同的对象、相同的 Boolean 值或者(当类型不同时)能被强制转化为上述情况之一,均被认为是相等的。
其他比较均被认为是不相等的。
cloudchen 2004-01-11
  • 打赏
  • 举报
回复
应该不是数据类型的问题,==不比较数据类型的


应该是有多余的空格

28,389

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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