Проверка ASP / MS ACCESS на наличие имени пользователя - PullRequest
1 голос
/ 30 мая 2011

Я создаю свой первый проект с ASP.Этот проект только делает основной вход / выход из системы регистрации.Мне было интересно, как бы я исправить приведенный ниже код так, чтобы, когда пользователь регистрируется на моем веб-сайте и вводит повторяющееся имя пользователя, которое уже существует в моей базе данных, он перенаправил бы на форму со всеми полями, все еще заполненными, но с пустым полем имени пользователядавая сообщение о том, что пользователь уже существует.

Ниже мой код:

<%
Dim objShop
set objShop=Server.CreateObject("ADODB.Recordset")

objShop.ActiveConnection=shop_STRING

objShop.Source = "SELECT * FROM Users WHERE UserName=" & Request.Form("regUsername")
objShop.CursorType=0
objShop.CursorLocation=2
objShop.LockType=3
objShop.Open

if not (objShop.EOF) then
    objShop.Source="Users"
    objShop.CursorType=0
    objShop.CursorLocation=2
    objShop.LockType=3
    objShop.Open

        objShop.Addnew
        objShop("FirstName")= Request.Form("regFirst")
        objShop("LastName")= Request.Form("regLast")
        objShop("StudentID")= Request.Form("regID")
        objShop("EmailAddress")= Request.Form("regEmail")
        objShop("UserName")= Request.Form("regUsername")
        objShop("Password")= Request.Form("regPassword")
        objShop("Address")= Request.Form("regAddress")
        objShop("Suburb")= Request.Form("regSuburb")
        objShop("Postcode")= Request.Form("regPostcode")
        objShop("ContactNumber")= Request.Form("regContact")
        objShop("CCCompany")= Request.Form("regCCCompany")
        objShop("CCNumber")= Request.Form("regCCNumber")
        objShop("CCExpiryMonth")= Request.Form("regCCExpMonth")
        objShop("CCExpiryYear")= Request.Form("regExpYear")
        objShop("CCCVCNumber")= Request.Form("regCVCNumber")
        objShop.Update

    objShop.Close
    set objShop= nothing
else
    response.write("Username already exists")
end if
%>

Ошибка, которую я получил с кодом:

Microsoft JET Database Engine error '80040e10'

No value given for one or more required parameters.

/home/registration.asp, line 17 

, поэтому я решилснова добавить response.write («Имя пользователя уже существует») в оператор if непосредственно перед добавлением значений, а затем появилась эта ошибка:

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'UserName='.

/home/registration.asp, line 17 

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

Ответы [ 2 ]

1 голос
/ 30 мая 2011

Рассмотрим эту версию псевдокода вашей текущей логики.

if not (objShop.EOF) then
    AddNew
Else
    display notice that user account already exists

not (objShop.EOF) будет True, если у вас есть одна или несколько записей в таблице Users, где UserName соответствует regUsername.

Итак, что вы говорите:

If we have previously stored one or more records for this UserName 
    add another record for this UserName 
Else (no matching record exists)
    display notice that user account already exists

Очевидно, что вы не должны собирать и хранить информацию о кредитной карте.

1 голос
/ 30 мая 2011

Вам нужны одинарные кавычки вокруг вашего ввода в выражении SQL

objShop.Source = "SELECT * FROM Users WHERE UserName='" & _
                    Request.Form("regUsername") & "'"
...