cgi 查寻时查不到(50分)

  • 主题发起人 主题发起人 foxnt
  • 开始时间 开始时间
F

foxnt

Unregistered / Unconfirmed
GUEST, unregistred user!

用以下程序,不管我如何输,它总是recordcount=0,显示'用户名/密码不正确!'

但我肯定没输错。不知为何,请大虾指点!
另外请问,如果密码正确,我就想打开一个新web页,
向我下面这样就太麻烦了,请问有何良策?

unit myweb;

interface

uses
Windows, Messages, SysUtils, Classes, HTTPApp, DBTables, Db;

type
TWebModule1 = class(TWebModule)
Query_login: TQuery;
Database1: TDatabase;
procedure WebModule1WebloginAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boole
an);
private
{ Private declarations }
public
{ Public declarations }
end;

var
WebModule1: TWebModule1;

implementation

{$R *.DFM}

procedure TWebModule1.WebModule1WebloginAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

begin
Query_login.close;
Query_login.ParamByName('pusrname').asstring := trim(request.Content
Fields.Values['name']);
Query_login.ParamByName('pusrpw').asstring := trim(request.ContentFi
elds.Values['password']);
Query_login.open;

if Query_login.RecordCount<>0 then
Response.Content :='<html>'+

'<head>'+
'<meta http-equiv="Content-Type" content="text/html; cha
rset=gb2312">'+
'<meta name="GENERATOR" content="Microsoft FrontPage 3.0
">'+
'<title>开发大本营--Delphi系列I</title>'+
'</head>'+

'<body background="di2001.jpg">'+
'<div align="center"><center>'+

'<table border="0" width="100%" height="53">'+
'<tr>'+
'<td width="9%" height="40" valign="top" align="cent
er"></td>'+
'<td width="25%" height="40" valign="top" align="cen
ter"></td>'+
'<td width="10%" height="20" rowspan="7" valign="top
" align="center"></td>'+
'<td width="29%" height="1" rowspan="7" valign="top"
align="center"><a'+
'href="http://WWW.CSDN.NET" target="_blank"><img src
="base2.jpg"'+
'alt="开发大本营网站——WWW.CSDN.NET" width="454" he
ight="444" border="0"></a></td>'+
'<td width="7%" height="40" valign="top" align="cent
er"></td>'+
'</tr>'+
'<tr>'+
'<td width="9%" height="23"></td>'+
'<td width="25%" height="23" valign="top" align="cen
ter"><a href="DELPHI/index.htm"><img'+
'src="b2003.jpg" alt="Delphi 大本营" width="210" hei
ght="44" border="0"></a></td>'+
'<td width="7%" height="0"></td>'+
'</tr>'+
'<tr>'+
'<td width="9%" height="17"></td>'+
'<td width="25%" height="17" valign="top" align="cen
ter"><a href="DOC/index.htm"><img'+
'src="b2001.jpg" alt="文章精选" width="210" height="
45" border="0"></a></td>'+
'<td width="7%" height="17"></td>'+
'</tr>'+
'tr>'+
'<td width="9%" height="1"></td>'+
'<td width="25%" height="1" valign="top" align="cent
er"><a href="FORMAT/index.htm"><img'+
'src="b2002.jpg" alt="文件格式大全" width="211" heig
ht="45" border="0"></a></td>'+
'<td width="7%" height="1"></td>'+
'</tr>'+
'<tr>'+
'<td width="9%" height="1"></td>'+
'<td width="25%" height="1" valign="top" align="cent
er"><a href="WEB/index.htm"><img'+
'src="b2004.jpg" alt="技术站点" width="210" height="
45" border="0"></a></td>'+
'<td width="7%" height="1"></td>'+
'</tr>'+
'<tr>'+
'<td width="9%" height="1"></td>'+
'<td width="25%" height="1" valign="top" align="cent
er"><a href="JOKE/index.htm"><img'+
'src="b2005.jpg" alt="开心一刻" width="211" height="
45" border="0"></a></td>'+
'<td width="7%" height="1"></td>'+
'</tr>'+
'<tr>'+
'<td width="9%" height="1"></td>'+
'<td width="25%" height="1" align="center" valign="t
op"><a href="CO/index.htm"><img'+
'src="logo201.jpg" alt="编者的话" width="188" height
="107" border="0"></a></td>'+
'<td width="7%" height="1"></td>'+
'</tr>'+
'<tr>'+
'<td width="9%" height="48"></td>'+
'<td width="25%" height="48"></td>'+
'<td width="59%" height="48" colspan="2"></td>'+
'<td width="7%" height="48"></td>'+
'</tr>'+
'</table>'+
'</center></div>'+
'</body>'+
'</html>'
else if Query_login.RecordCount = 0 then
Response.Content := '用户名/密码不正确!'+'('+trim(request.ContentFi
elds.Values['name'])+')';

end;

end.

 
先不要用cgi嘛, 你可以试试看在一般程序里面你的query的recordcount
这应该不是一个复杂的问题.
 
程序没错,看你用的数据库table和你库里的sql,
建议:在database desktop中先验证一下你的存储过程或sql
另外:
Use RecordCount with care, because record counting can be a costly
operation, especially for SQL queries that return large result sets.

Generally, an application should only use RecordCount with Paradox
and dBASE tables.
 
1.首先确定你form的提交方法是否正确: POST? GET?

2.把if Query_login.RecordCount<> then 改成
if not Query_login.eof then 试一试
 
我也刚好遇到过类似问题,(ISAPI)
不论用RECORDCOUNT,RECNO,EOF 都不能正确
判断查询结果是否为空。
 
很重要的一点是,你应该先确定一下request.Content Fields.Values[...]
中的返回值是否正确
 
为何没人再来说话了?
 
有时用Query_login.RecordCount来确定query数据库的记录根本就不行。
我就是用这种没行通。
我用select count(*) as newfield from query where ...
来确定我要找的记录数然后再写我要实现的与记录数有关的事件。
 
爱情鸟:
这样不是又查多了一次?慢了吧?
 
接受答案了.
 
后退
顶部