使用ASP和INSERT INTO -

时间:2008-12-10 20:32:11

标签: sql asp-classic vbscript ado

我正在尝试创建一个将数据输入数据库的简单页面,我的代码位于下面。

<%@ LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<!--#include FILE=dbcano.inc-->
<%

dim username,password,f_name,l_name,objConn,objs,query

username   = Request.Form("user")
password   = Request.Form("pass")
f_name     = Request.Form("fname")
l_name     = Request.Form("lname")

if((f_name <> null) or (f_name <> "")) then
    response.redirect("patti_account.asp")
else
    Set objConn = ConnectDB()
    query       = "INSERT INTO user (username,password,f_name,l_name) VALUES ('"& username &"','"& password &"','"& f_name &"','"& l_name &"')"
    Set objs    = objConn.Execute(query)

    Response.Redirect ("thankyou.asp")

end if

%>

运行页面时出现此错误:

  

Microsoft OLE DB Provider for SQL   服务器错误'80040e14'

     

关键字附近的语法不正确   '用户'。

     

create_account.asp,第18行

我检查了所有内容,我的字段名称存在,我的表名也正确。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

用户是SQL Server中的保留字。把它放在方括号中,例如的 [用户]

答案 1 :(得分:2)

这很容易受到SQL注入攻击。想象一下如果有人把它放到姓氏中会发生什么:

');DROP Table [user];--

修复它,否则我会亲自跟踪你并用湿面条打你,直到你这么做。

答案 2 :(得分:1)

尝试将其更改为:

query       = "INSERT INTO [user] (username,password,f_name,l_name) VALUES ('"& username &"','"& password &"','"& f_name &"','"& l_name &"')"

(转义表名,因为它是保留字)

另外,请不要忘记验证键盘输入,因为此代码会受到SQL注入攻击。