注册 登录
编程论坛 ASP技术论坛

[求助]能让你郁闷一晚上的简单问题

yutaozj 发布于 2007-09-28 10:27, 1064 次点击

昨天遇到个哭笑不得的问题,我也不知道这怎么回事,编程那么久了真的是第一次遇到,看如下代码:

<%
hao=""
jiaohao=""
yiban=""
cha=""
pp=""
ha=""

response.write "insert into laodongjilv(hao,jiaohao,yiban,cha,userName) values('"&hao&"','"&jiaohao&"','"&yiban&"','"&cha&"','"&userName&"')"
%>

一个页面里就这么一句话,你运行的话会发现提示语句未结束的错误,但是将输出语句中的变量hao改成pp那就可以正常输出了,不相信的话你自己就试试看吧,就会知道我说的没错。
尽管我觉得这比较不可失忆,不过的确遇到这样的情况了在我的机器上。
望高手解答!

14 回复
#2
piaoxue2007-09-28 10:36
是不是ASP里面保留的关键字呀?
#3
yutaozj2007-09-28 10:52
我也郁闷啊,不过想想hao怎么会是关键字呢?从来没看到过。
我还发现运行以下语句也错误

<%
response.write ""&hao
%>
#4
yutaozj2007-09-28 10:56
<%
dim hao_123
hao_123="123"
response.write ""&hao_123
%>

以上这段代码代码运行起来也是错的,呵呵 奇怪吧~
#5
zsl55662007-09-28 11:15

这是什么程序,看不懂

#6
shaoli42612007-09-28 12:30
应该不是变量的问题,而是这个“”的问题。我可也说不出来为什么是………………
等高手吧~~~
#7
盖世豪侠2007-09-28 12:39
<%
dim hao_123
hao_123="123"
response.write ""&hao_123
%>

改成response.write "" & hao_123

&号前后面加空格就好了

[此贴子已经被作者于2007-9-28 12:42:08编辑过]

#8
盖世豪侠2007-09-28 12:54
哪我就不知道了,我这边前后加空格就行了
#9
威龙嘉少2007-09-28 12:55

加不加空格有什么区别吗,我感觉一样的啊,那他前面的问题怎么解释 啊?

#10
hmhz2007-09-28 12:57
最基本的都搞错,真是受不了你们

应该这样
<%
dim hao_123
hao_123="123"
response.write hao_123
%>

或者这样
<%
dim hao_123
hao_123="123"
response.write ""&hao_123&""
%>

#11
盖世豪侠2007-09-28 12:58


[此贴子已经被作者于2007-9-28 13:00:38编辑过]

#12
tianyu1232007-09-28 14:18



&h 是将十六进制转换为十进制的表示符号

&ha 表示将十六进制的a转换为十进制,也就是转化为10

同理:

&hb 表示将十六进制的b转换为十进制,也就是转化为11

那么

像 response.write""&ha

&ha 将被解释为十六进制的a转换为十进制的10

而失去&本来的作用

[此贴子已经被作者于2007-9-28 14:24:37编辑过]

#13
yutaozj2007-09-28 16:31
楼上的真受不了你,自己没实践过就大发谬论。

经过老师的指点我终于知道怎么回事了。

7楼说的是对的。
之所以出现这样的情况是因为&h连在一起的话ASP会认为这是一个16进制的值,所以用变量hao,hbsd,h12等等都是错的。

因为都会被认为是16进制值,但是hh,hk等是可以的,因为h后的那个字符已经超过了16进制表示范围了,当然用h变量也可以。

打个空格是最好的做法,编译器就不会混淆了。
#14
yutaozj2007-09-28 16:32
呵呵不好意思我帖子没看完,我说的楼上值的是10楼

只看了一页回复。

现在问题解决了,谢谢各位的关照。
#15
wcwtitxu2007-10-06 07:16
把 & 和 h 用空格断开


因为 VBS 中 &H 是十六进制数前辍
1