我正在尝试创建一个将数据输入数据库的简单页面,我的代码位于下面。
<%@ 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行
我检查了所有内容,我的字段名称存在,我的表名也正确。
有什么建议吗?
答案 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注入攻击。