我的问题是:我希望使用变量将值插入到我的SQL数据库中。这些变量是通过asp及其相关的html表单定义的。
我是初学者,这是我到目前为止的代码。
我的表:
<html>
<body>
<form action="trial3.asp" method="post">
Your first name: <input type="text" name="fname" size="20" /><br>
Your last name: <input type="text" name="lname" size="20" /><br>
Your email: <input type="text" name="email" size="20" /><br>
<input type="submit" value="Submit" />
</form>
</body>
</html>
我的trial3.asp:
<%
'creating the inputs for the table, first name, last name, email
dim fname, lname, email
fname=Request.form("fname")
lname=Request.form("lname")
email=Request.form("email")
%>
asp中的MySQL代码:
SQL="DECLARE @fname AS varchar(50), @lname VARCHAR(50), @email VARCHAR(100)"
SQL=SQL & "SET @fname='"+fname+"'"
SQL=SQL & "SET @lname='"+lname+"'"
SQL=SQL & "SET @email='"+email+"''"
SQL=SQL & "INSERT INTO Students (First_Name, Last_Name, Email) values (@fname, @lname, @email)"
感谢您的帮助!
答案 0 :(得分:0)
他试图将变量插入到SQL字符串中,以避免通过直接访问进行SQL注入(例如,insert语句不直接保存表单的输入,而是通过@fname,@ lname)
我没有看到问题,但我确实发现每个SQL命令之间缺少间距,因此当您调用“&amp;”时,它们最终会像这样:
DECLARE @fname AS varchar(50),@ list VARCHAR(50),@ email VARCHAR(100)SET @ fname ='test'SET @ lname ='ddddd'SET @ email ='Bob'
答案 1 :(得分:-1)
您使用的是什么数据库 - SQL Server,MySQL,Access还是其他什么?您的查询看起来好像是SQL Server特定的。
无论如何,我认为它不需要那么复杂
SQL="INSERT INTO Students (First_Name, Last_Name, Email) values ('"& fname &"', '"& lname &"', '"& email &"')"
应该做你想做的事情
(注意 - 您可以使用+或&amp;来连接Classic ASP中的字符串。)
编辑 - 我刚刚阅读了或多或少相同的评论。如果您的查询无效,我建议添加
Response.write SQL
在您尝试执行查询的行的紧前面的行上。它在调试方面非常有用。经典的ASP语法可以很容易地将单引号或逗号放在错误的位置
答案 2 :(得分:-1)
请将以下代码放入 trial3.asp
<% Dim fname, lname, email, stringSQL, objectCon
fname = Request.Form("fname")
lname = Request.Form("lname")
email = Request.Form("email")
Set objectCon = Server.CreateObject("ADODB.Connection")
objectCon.ConnectionString "Driver={SQL SERVER};Server=server_name;UID=user_name;PWD=password;Database=database_name" 'SET CONNECTION STRING OF YOUR DATABASE
stringSQL = "INSERT INTO Students (First_Name, Last_Name, Email) VALUES ('"& fname &"', '"& lname &"', '"& email &"')"
objectCon.Open
objectCon.Execute(stringSQL)
objectCon.Close() %>
答案 3 :(得分:-1)
找到答案。
谢谢大家的帮助。
Response.write SQL是一个救星 - 事实证明我有一个单引号太多,而且我的SQL间距都很糟糕。修好后,程序运行良好。
对于SQL注入问题,如果我使用变量将信息插入数据库,我是否会受到覆盖?我想我可以应用额外的参数来“清理”变量,如果需要的话......
有什么想法吗?