Asp classic 如何在ASP中执行按钮操作?

Asp classic 如何在ASP中执行按钮操作?,asp-classic,Asp Classic,我是ASP的新手。我需要插入值到数据库中使用ASP点击提交按钮。 我知道怎么做 我的代码是: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <!--#include file="connection.asp"--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/

我是ASP的新手。我需要插入值到数据库中使用ASP点击提交按钮。 我知道怎么做

我的代码是:

      <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
      <!--#include file="connection.asp"-->
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>Form</title>

      </head>
      <form name="form1" id="form1" method="post" onsubmit="return validate()">
      <h3>FORM</h3>
      <table align="center" cellpadding = "10">
      <tr>
      <td>Name</td>
      <td><input type="text" name="uname" id="uname" /></td>
      </tr>

      <tr>
      <td>Mobile Number</td>
      <td><input type="text" name="umobile" id="umobile" maxlength="10" /></td>
      </tr>

      <tr>
      <td>Email Address</td>
      <td><input type="text" name="uemail" id="uemail" /></td>
      </tr>


      <tr>
      <td>Residing City
      <td><input type="text" name="rescity" id="rescity" /></td>
      </tr>

      <tr>
      <td colspan="2" align="center">
      <input type="submit" value="Submit">
      </td>
      </tr>

      </table>
      </form>
      <body>
      <%

      uname = request.Form("uname")
      umobile = request.Form("umobile")
      uemail = request.Form("uemail")
      city = request.Form("city")

      set rs = Server.CreateObject("ADODB.Recordset")
      Qry = "INSERT INTO enquirydetails([name],[mobile],[email],[residingcity]) values ('"&(uname)&"','"&(umobile)&"','"&(uemail)&"','"&(city)&"')"
       rs.OPEN Qry,Conn

       %>
      </body>
      </html>

形式
形式
名称
手机号码
电子邮件地址
居住城市
使用此代码,如果我转到该页,将插入为空的值


请给我任何建议。

因为无法检查表单中的数据是否已提交,因此每次加载页面时,插入新记录的代码都在运行

通常的方法是检查Request.Form的长度
以查看是否提交了任何表单参数。像这样的东西应该可以修复你的代码

0那么
uname=请求表(“uname”)
umobile=request.Form(“umobile”)
uemail=request.Form(“uemail”)
城市=申请表(“城市”)
set rs=Server.CreateObject(“ADODB.Recordset”)
Qry=“在查询详情([姓名]、[手机]、[电子邮件]、[居住城市])值(“&(uname)&”、“&(umobile)&”、“&(uemail)&”、“&(城市)&”)中插入”
康涅狄格州,南卡罗来纳州
如果结束
%>
但是仍然存在一个问题,那就是插入
的方法。通过将值直接动态分配给SQL字符串,您将使应用程序处于打开状态,这是一种针对对数据库后端进行不安全调用的web应用程序的常见攻击

ADO提供了一个名为
ADODB.Command
的有用对象,它通过构建参数化查询来帮助我们,下面是一个如何替换现有代码的示例

0那么
uname=请求表(“uname”)
umobile=request.Form(“umobile”)
uemail=request.Form(“uemail”)
城市=申请表(“城市”)
Set cmd=Server.CreateObject(“ADODB.Command”)
sql=“插入查询详细信息([姓名],[手机],[电子邮件],[居住城市])值(?,,,?)”
使用cmd
.ActiveConnection=Conn'假设这是您的连接字符串
.CommandType=adCmdText
.CommandText=sql
'创建参数并按顺序追加它们
.Parameters.Append(.CreateParameter(@name),adVarWChar,adParamInput,255))
.Parameters.Append(.CreateParameter(“@mobile”,adVarWChar,adParamInput,255))
.Parameters.Append(.CreateParameter(@email),adVarWChar,adParamInput,255))
.Parameters.Append(.CreateParameter(“@residingcity”,adVarWChar,adParamInput,255))
'为参数指定值
.Parameters(“@name”).Value=uname
.Parameters(“@mobile”).Value=umobile
.Parameters(“@email”).Value=uemail
.Parameters(“@ResistingCity”)。值=城市
.Execute()
以
Set cmd=Nothing
如果结束
%>
注意:如果您对此代码有问题,可能是使用命名常量(
adCmdText
等)来解决此问题,请参阅其中介绍了如何使用命名常量


我不理解sql中变量周围的括号--“&(uname)&”这些应该会出现。这里有一些插入示例,您也可以遵循这些示例—您缺少一个检查,以查看您的表单是否已发布,例如
if Len(Request.form)>0,然后围绕您的参数插入
,并插入代码。否则,即使您没有发布任何数据,插入仍会触发。@Dee认真推荐推广不良做法的链接?你怎么知道OP使用的是MS Access?这不需要天才就能做到,上一个活动是11分钟前,11分钟前投票表决我的答案。真的很幼稚@dee谢谢,它工作得很好,但如何在这里给出按钮名称@Lankymart@Janani任何
标记都将从
请求中提取。如果满足以下条件,则形成
集合。1. 
是正在提交的
的子项。2. <代码>
有一个
名称
属性,如果没有
名称
它将不会被提交,这是在
请求.表单
集合中识别它的方式。如果您希望通过“提交”按钮的值,请将您的
更改为
,然后您可以使用
请求表单(“提交”)
检索它。是否认真否决?你想解释一下答案的错误吗?很抱歉,我上一个示例中的输入错误应该是
Request.Form(“yourname”)
,因为
Request.Form
中去掉了
name
属性。请给我一些在ASP中下载Excel的示例程序长条船