Я пытаюсь создать простую страницу, которая вводит данные в базу данных, и мой код приведен ниже.
<%@ 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 Server error '80040e14'
Incorrect syntax near the keyword 'user'.
create_account.asp, line 18
Я все проверил, мои имена полей существуют, и имя моей таблицы также правильное.
Какие-либо предложения?
TravisO - Если я проверю свой код даже на стороне клиента и на стороне сервера?
... такой код, который вызывает кошмары администратора БД.


Пользователь - зарезервированное слово в SQL-сервере. Поместите его в квадратные скобки, например [Пользователь].
Работал как шарм! Спасибо, Мартин. Я даже не подумал о том, чтобы проверить, было ли слово «пользователь» зарезервированным.
Попробуйте изменить его на:
query = "INSERT INTO [user] (username,password,f_name,l_name) VALUES ('"& username &"','"& password &"','"& f_name &"','"& l_name &"')"
(избегайте имени таблицы, так как это зарезервированное слово)
Кроме того, не забудьте проверить ввод с клавиатуры, поскольку этот код подвержен атакам с использованием SQL-инъекций.
Это уязвимо для SQL-инъекции. Представьте, что случится, если кто-то подставит вместо фамилии такую:
');DROP Table [user];--
Исправьте это, или я лично выслежу вас и буду бить вас мокрой лапшой, пока вы это не сделаете.
+1 за взбивание влажной лапши; Хорошее замечание и об инъекции :)
Спасибо, Джоэл! Я обязательно буду следить за этим ... еще раз спасибо. Райан
Ваш код завален SQL-инъекциями, подумайте, что происходит, когда я ввожу свое имя как: '; Пользователь DROP TABLE;