关于调用SQL语句进行含变量的条件查询遇到的问题

Redball 2003-12-20 07:05:41
这是执行页面,他获得name1=aaa&subject=math

<%
dim conn
dim connstr
dim db
db="date.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open connstr

set rs=conn.Execute ("select * from base where name= "& request.form(""&name1&"") &"")
response.write Trim(rs(""&subject&""))&"<br>"


function CloseDatabase

Conn.close
Set conn = Nothing

End Function
%>

说明:
我的目的是由上一页提交过来的姓名和科目查询成绩
base是数据库的表名
name是字段名
name1是提交过来的姓名变量
subject是提交过来的科目变量

http://www.verysky.net/test/seach.html 查询页
http://www.verysky.net/test/result.asp 结果页

是不是双引号的问题?怎么改?
...全文
157 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_zhe_20 2003-12-21
  • 打赏
  • 举报
回复
你的下拉列表的值为1、2、3、4
<SELECT name="subject">
<OPTION value="1"selected>数学</OPTION>
<OPTION value="2">历史</OPTION>
<OPTION value="3">生物</OPTION>
<OPTION value="4">计算机</OPTION>
</SELECT>

而数据表中又是
name math history biology computer

这当然出错了
试下
i= cint(request.form("subject"))
select case i
case 1:i="math"
case 2:...
end select
response.write rs(i)
Redball 2003-12-21
  • 打赏
  • 举报
回复
是这样一个简单的查询系统,有一个提交页面,一个显示页面,一个数据库文件

数据库文件内容:
数据库名:date.mdb
表名:base

内容:

name math history biology computer
aaa 98 75 60 80
bbb 96 76 60 70
ccc 86 74 60 60
ddd 91 75 63 50
eee 94 71 65 40
fff 86 73 68 30



提交页面:seach.html

<HTML><HEAD>
<BODY>
<form action="result.asp" method="post">
<P>查询
<select name="name1">
<OPTION value="aaa" selected>aaa</OPTION>
<OPTION value="bbb">bbb</OPTION>
<OPTION value="ccc">ccc</OPTION>
<OPTION value="ddd">ddd</OPTION>
<OPTION value="eee">eee</OPTION>
<OPTION value="fff">fff</OPTION>
</select>的
<SELECT name="subject">
<OPTION value="1"selected>数学</OPTION>
<OPTION value="2">历史</OPTION>
<OPTION value="3">生物</OPTION>
<OPTION value="4">计算机</OPTION>
</SELECT>
成绩
<INPUT type=submit value=Submit></P>
</form>
</BODY>
</HTML>



显示页面:resullt.asp

<HTML><HEAD>
<BODY>
<%
dim conn
dim connstr
dim db
db="date.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &

Server.MapPath(""&db&"")
conn.Open connstr

set rs=conn.Execute("select * from base where name= '"&

request.form("name1") &"'" )

i= request.form("subject")
response.write rs(i)

%>
</BODY></HTML>


就是通过名字和科目查询成绩,明白了吧。
PPLUNCLE 2003-12-21
  • 打赏
  • 举报
回复
楼主具体什么问题
你说得到数据,那个你不是得到了吗?
直接用
变量=request("变量名")
然后查询就是啦!!
我看了半天没看懂楼主要问什么??
Redball 2003-12-21
  • 打赏
  • 举报
回复
大家帮帮忙和

就是两个变量
name1=aaa&subject=math
把单个成绩输出就可以了,引号把人搞死了!
Redball 2003-12-20
  • 打赏
  • 举报
回复
回 a_zhe_20(努力学习是为了找工作) :

不行……
a_zhe_20 2003-12-20
  • 打赏
  • 举报
回复
response.write Trim(rs("'"&subject&"'"))&"<br>"

改为
subject="mycollection"
response.write Trim(rs(subject))&"<br>"
Redball 2003-12-20
  • 打赏
  • 举报
回复
angelheavens(龙辉) :
非常感谢你的热心帮助
现在
set rs=conn.Execute ("select * from base where name= '"& request.form("name1") &"'")
这里没有错误了
但错误出现在了
response.write Trim(rs("subject"))&"<br>"
不知道怎么办
其中subject也是变量名,可以赋值为表的其他项。
改为
response.write Trim(rs("'"&subject&"'"))&"<br>"
也不行


编译错误提示如下:

Technical Information (for support personnel)

Error Type:
ADODB.Recordset (0x800A0CC1)
Item cannot be found in the collection corresponding to the requested name or ordinal.
/result.asp, line 17


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)

Page:
POST 26 bytes to /result.asp

POST Data:
name1=bbb&subject=computer
hj_911 2003-12-20
  • 打赏
  • 举报
回复

me1里加双引号,刚写错了
set rs=conn.Execute ("select * from base where name= '"& request.form("name1") &"'")
angelheavens 2003-12-20
  • 打赏
  • 举报
回复
(1)对于字符型数据要用单引号括起
set rs=conn.Execute ("select * from base where name= '"& request.form("name1")&"'")

response.write Trim(rs("subject"))&"<br>"
hj_911 2003-12-20
  • 打赏
  • 举报
回复
set rs=conn.Execute ("select * from base where name= '"& request.form(name1) &"'")
试试

28,407

社区成员

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

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