ASP将表中找到的记录某些字段复制到另一个表
sql="select*from用户a,用户组bwherea.用户组ID=b.idanda.登录账号='"&loginName&"'anda.登录密码='"&loginP...
sql="select * from 用户 a, 用户组 b where a.用户组ID=b.id and a.登录账号='"&loginName&"' and a.登录密码='"&loginPwd&"'"
set rs = hbwl.conn.execute(sql)
上面用户登陆成功
请问:怎样将该用户的 ID 登陆帐号 和其它相关的字段 自制到 另一个表“ 登陆记录 ”中
请给具体一些,我不太会,谢谢
hbwl.conn.execute("update 用户 set 登录次数=登录次数+1,登录时间='" & now() & "' where ID=" & rs(0)) 展开
set rs = hbwl.conn.execute(sql)
上面用户登陆成功
请问:怎样将该用户的 ID 登陆帐号 和其它相关的字段 自制到 另一个表“ 登陆记录 ”中
请给具体一些,我不太会,谢谢
hbwl.conn.execute("update 用户 set 登录次数=登录次数+1,登录时间='" & now() & "' where ID=" & rs(0)) 展开
展开全部
几个建议如下:1. 如果只是要比对用户提交的用户名跟密码,应该只需要开启用户表来比对即可,不需要同时开启用户组表,毕竟用户组编号在用户表中已经存在,如果只是需要读取用户组编号,也不需要同时开启用户组表。
2. 数据表的名称尽量以英文与数字命名,避免某些情况下因为中文编码问题造成的奇怪错误。
3. 数据表的名称建议以全大写来命名,日后在看程序的时候可以比较轻松的找到出现数据表的位置。
4. 数据表中的字段名称也尽量以英文与数字来命名,原因同上。
5. 用户的密码建议以MD5加密后存放,较为安全
6. 读入的用户提交的账户名应该加上特殊字符的侦测,避免可能的SQL注入
假设几个数据表如下:
1. USERS(用户表) User_ID int 自动编号 (用户编号)
UserGroup_ID int (用户所在的用户组编号)
User_Username nvarchar(20) (用户账户名)
User_Password nvarchar(32) (用户密码)
User_RealName nvarchar(MAX) (用户真实姓名)
User_Login_Times int (用户登入次数)
2. USERGROUPS(用户组表)
UserGroup_ID int 自动编号 (用户组编号)
UserGroup_Name nvarchar(20) (用户组名称)
3. USERLOGINLOGS(用户登入记录表)
Log_ID int 自动编号 (登入记录编号)
User_ID int (登入的用户编号)
Log_DateTime datetime (登入的日期时间)
Log_YN nvarchar(1) (登入的成功(Y)与失败(N)标记)
Log_FromIP nvarchar(15) (登入来自IP地址)
程序应该类似如下:<%
'### 读入用户提交的用户名与密码
loginName = Request.Form("loginName")
loginPwd = Request.Form("loginPwd")
'### 提交的用户名在丢到SQL查询式去比对前应该先进行特殊字符的侦测,在此先略去
'### 开启数据库连线
Set Conn = OpenConnection()
'### 建立虚拟数据表
Set rs = Server.CreateObject("ADODB.RecordSet")
'### 将SQL查询的结果丢入虚拟数据表
rs.Open "Select A.* from USERS A where A.User_Username = '" & loginName & "'", Conn, 1, 1
If not rs.EOF then
'### 如果记录存在,则比对密码
User_Password = rs("User_Password")
If loginPwd = User_Password then
'### 如果密码正确,则将必要信息丢入Session
Session("User_ID") = rs("User_ID")
Session("User_RealName") = rs("User_RealName")
Session("UserGroup_ID") = rs("UserGroup_ID")
'### 记录登入信息
Conn.Execute("Insert into USERLOGINLOGS (User_ID,Log_DateTime,Log_YN,Log_FromIP) values (" & rs("User_ID") & ",GetDate(),'Y','" & Request.ServerVariables("REMOTE_HOST") & "')")
'### 记录登入次数
Conn.Execute("Update USERS set User_Login_Times = User_Login_Times + 1 where User_ID = " & rs("User_ID"))
Else
'### 如果密码错误,则返回错误信息,并关闭虚拟数据表与数据库连接
Response.Write("密码错误")
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
Response.End
End If
Else
'### 如果记录不存在,则返回错误信息,并关闭虚拟数据表与数据库连接
Response.Write("账户不存在")
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
Response.End
End If
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
%>
2. 数据表的名称尽量以英文与数字命名,避免某些情况下因为中文编码问题造成的奇怪错误。
3. 数据表的名称建议以全大写来命名,日后在看程序的时候可以比较轻松的找到出现数据表的位置。
4. 数据表中的字段名称也尽量以英文与数字来命名,原因同上。
5. 用户的密码建议以MD5加密后存放,较为安全
6. 读入的用户提交的账户名应该加上特殊字符的侦测,避免可能的SQL注入
假设几个数据表如下:
1. USERS(用户表) User_ID int 自动编号 (用户编号)
UserGroup_ID int (用户所在的用户组编号)
User_Username nvarchar(20) (用户账户名)
User_Password nvarchar(32) (用户密码)
User_RealName nvarchar(MAX) (用户真实姓名)
User_Login_Times int (用户登入次数)
2. USERGROUPS(用户组表)
UserGroup_ID int 自动编号 (用户组编号)
UserGroup_Name nvarchar(20) (用户组名称)
3. USERLOGINLOGS(用户登入记录表)
Log_ID int 自动编号 (登入记录编号)
User_ID int (登入的用户编号)
Log_DateTime datetime (登入的日期时间)
Log_YN nvarchar(1) (登入的成功(Y)与失败(N)标记)
Log_FromIP nvarchar(15) (登入来自IP地址)
程序应该类似如下:<%
'### 读入用户提交的用户名与密码
loginName = Request.Form("loginName")
loginPwd = Request.Form("loginPwd")
'### 提交的用户名在丢到SQL查询式去比对前应该先进行特殊字符的侦测,在此先略去
'### 开启数据库连线
Set Conn = OpenConnection()
'### 建立虚拟数据表
Set rs = Server.CreateObject("ADODB.RecordSet")
'### 将SQL查询的结果丢入虚拟数据表
rs.Open "Select A.* from USERS A where A.User_Username = '" & loginName & "'", Conn, 1, 1
If not rs.EOF then
'### 如果记录存在,则比对密码
User_Password = rs("User_Password")
If loginPwd = User_Password then
'### 如果密码正确,则将必要信息丢入Session
Session("User_ID") = rs("User_ID")
Session("User_RealName") = rs("User_RealName")
Session("UserGroup_ID") = rs("UserGroup_ID")
'### 记录登入信息
Conn.Execute("Insert into USERLOGINLOGS (User_ID,Log_DateTime,Log_YN,Log_FromIP) values (" & rs("User_ID") & ",GetDate(),'Y','" & Request.ServerVariables("REMOTE_HOST") & "')")
'### 记录登入次数
Conn.Execute("Update USERS set User_Login_Times = User_Login_Times + 1 where User_ID = " & rs("User_ID"))
Else
'### 如果密码错误,则返回错误信息,并关闭虚拟数据表与数据库连接
Response.Write("密码错误")
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
Response.End
End If
Else
'### 如果记录不存在,则返回错误信息,并关闭虚拟数据表与数据库连接
Response.Write("账户不存在")
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
Response.End
End If
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
%>
追问
谢谢您的回复,代码 还是看明白了,但是叫我写我就写不出来,呵呵
原因是这样的,我下载人家的ASP整站,数据库已定好, 我就想在原数据库加多一个表
用来记录登陆情况的这个新表“登录记录”有的字段是
原来数据库“用户”这个表有的,有的在另一个原数据表“成绩”里有的,有的是自己新加入的
问题是 怎样写代码 (将原数据库旧表中的某些字段(通过登陆已知道是那一条记录的了)复制到新表中)
追答
ASP其实蛮简单的,基本的方法如下(假设来源表是“用户”跟“成绩”,假设目标资料表是“登录记录",如果ID都可以拿来判别记录的话)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询