0

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

<%@ 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

%>

运行页面时出现此错误:

用于 SQL Server 错误“80040e14”的 Microsoft OLE DB 提供程序

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

create_account.asp,第 18 行

我已经检查了所有内容,我的字段名存在并且我的表名也是正确的。

有什么建议么?

4

3 回答 3

3

用户是 SQL Server 中的保留字。将其放入方括号中,例如[user]

于 2008-12-10T20:36:13.750 回答
1

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

');DROP Table [user];--

修好它,否则我会亲自追踪你并用湿面条打败你,直到你这样做。

于 2008-12-10T21:08:43.607 回答
0

尝试将其更改为:

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

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

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

于 2008-12-10T20:38:14.463 回答