问:在做网页数据库时碰到的问题,数据库字段aticleid唯一表示一条记录,点击该记录名称,打开新窗口,地址栏应显示http://***.***.**.**/viewarticle.asp?id=*****
若articleid=0015555,则点击打开后只能显示静态页面部分,地址栏显示http://***.***.**.**/viewarticle.asp?id=84405(随机的)若articleid改成15555,则能正常显示,地址栏显示http://***.***.**.**/viewarticle.asp?id=15555。
答:
ASP中这样的变量一般是Variant类型的,根据你处理情况来定。
这样的话0015555和15555是不能相等的;
对于两个URL
http://***.***.**.**/viewarticle.asp?id=15555
http://***.***.**.**/viewarticle.asp?id=0015555
对于第一个
id1=request('id')=15555(默认类型integer)
对于第二个
id2=request('id')="0015555"(默认类型string)
如果这个id用于sql查询语句,那么
select * from biao where id=id1
即select * from biao where id=15555
select * from biao where id=id2
即select * from biao where id=0015555返回的结果是不同的。
一般来说数据库中的id都是number(integer或者long)类型的,所以用字符串型表示的值查找是不会有任何结果的。后面一个就可能没有任何值返回,所以在显示页面上也就没有动态的显示。
建议你先跟踪检查程序中的sql查询语句,看是否有效;如果是由于上面的错误导致查询出现空集,那么则要修改检查和判断request('id')值的函数
,过滤掉前面的0,或者进行强制类型转换,你看法网络后台程序的时候一定要注意后台数据库的安全,像这样的URL检查(request('id'))是必须的,否则别人就有可能利用这个缺陷构建特殊的URL来使你的后台崩溃。
转载于:https://www.cnblogs.com/yunshublog/archive/2008/04/20/1162247.html