Использование ASP и INSERT INTO - - PullRequest
0 голосов
/ 10 декабря 2008

Я пытаюсь создать простую страницу, которая вводит данные в базу данных, и мой код указан ниже.

<%@ 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 для SQL Ошибка сервера '80040e14'

Неверный синтаксис рядом с ключевым словом 'Пользователь'.

create_account.asp, строка 18

Я проверил все, мои имена полей существуют, и мое имя таблицы также является правильным.

Есть предложения?

Ответы [ 3 ]

3 голосов
/ 10 декабря 2008

Пользователь - зарезервированное слово в SQL-сервере. Поместите его в квадратные скобки, например, [пользователь] .

2 голосов
/ 11 декабря 2008

Это уязвимо для SQL-инъекций. Представьте себе, что произойдет, если кто-то введет это для фамилии:

');DROP Table [user];--

Исправьте это, или я лично выследю вас и буду избивать вас влажной лапшой, пока вы не сделаете.

1 голос
/ 10 декабря 2008

Попробуйте изменить его на:

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

(экранировать имя таблицы, поскольку это зарезервированное слово)

Кроме того, не забудьте проверить ввод с клавиатуры, так как этот код подвергается атакам SQL-инъекций.

...