Permalänk

ASP - databasstrul

Jag försöker göra ett formulär där man kan bli medlem i ett forum. Det jag vill göra är att klienten ska fylla i sina uppgifter. Sedan ska koden kolla om användarnamnet eller emailen redan finns i databasen. Jag har gjort på följande sett:

------------------------------------------------------
If Request.QueryString("do") = "addUser" Then

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("users.mdb")

nick = Request.Form("nick")
If nick = "" Then
Session("mess") = "Du måste fylla i ett användarnamn!"
Response.Redirect "createuser.asp"
End If

email = Request.Form("email")
If email = "" Then
Session("mess") = "Du måste fylla i din email!"
Response.Redirect "createuser.asp"
End If

pass1 = Request.Form("pass1")
pass2 = Request.Form("pass2")

If pass1 <> pass2 Then
Session("mess") = "Lösenorden var inte identiska!"
Response.Redirect "createuser.asp"
Else
pass1 = pass1
End If

homepage = Request.Form("homepage")
joined = date

SQL = "Select * From tblUsers Where strUsername=" & Request.Form("nick")
Set RecSet = Conn.Execute(SQL)

If RecSet.EOF Then

nicktest = good

Else

Session("mess") = "Användarnamnet var upptaget!"
Response.Redirect "createuser.asp"

End If

SQL = "Select * From tblUsers Where strEmail=" & Request.Form("email")
Set RecSet = Conn.Execute(SQL)

If RecSet.EOF Then

emailtest = good

Else

Session("mess") = "E-postadressen var upptagen!"
Response.Redirect "createuser.asp"

End If

If nicktest = good AND emailtest = good Then

SQL = "Insert Into tblUsers(strUsername,strEmail,strHomepage,strPassword,strJoined) Values('" & nick & "','" & email & "','" & homepage & "','" & pass1 & "','" & joined & "')"
Conn.Execute(SQL)

Session("mess") = "inne"
Response.Redirect "createuser.asp"
End If

End If
------------------------------------------------------

Men jag får felmeddelandet:

Microsoft JET Database Engine (0x80040E10)
Det har inte angetts något värde för en eller flera nödvändiga parametrar.

Den pekar på denna rad:

SQL = "Select * From tblUsers Where strUsername=" & Request.Form("nick")

Men den är väl inte fel? fattar noll...

Permalänk
Medlem

prova och skriv så här:

SQL = "Select * From tblUsers Where strUsername = ' " & Request.Form("nick") & " ' "

eller

SQL = "Select * From tblUsers Where strUsername = '%" Request.Form("nick") "%' "

jag har haft samma problem förut, men jag fick till det genom att trixa lite med situationsTecknena. Jag har gjort flera sidor med db-kopplingar i ASP och ibland har jag fått skriva olika, så jag ser ingen logik i det hela, men som sagt. Prova mina alt. ovan. Om inte det skulle funka, så kan du prova lite olika variationer.

Visa signatur

Intel C2D E6400 @ 2.13GHz || Zalman CNPS9500LED • Gigabyte GA-965P-DS3 v.3 || Corsair TWIN2X 6400 DDR2 2x1GB || PowerColor Radeon X1900XT 256MB GDDR3 || Hiper Type-M 580W 18dB || Seagate Barracuda 7200.10 320GB SATA2 16MB 7200RPM

Permalänk
Medlem

Sättet du har använt, alltså att bara sätta en " på slutet och sedan följa upp med en Request.Form funkar bara om det är numeriska värden.
Tex:

Ett numeriskt värde:
sql = "SELECT * FROM table WHERE id=" & Request.Querystring("id")

En sträng:
sql = "SELECT * FROM table WHERE nick='" & Request.Form("nick") & "'"

Sträng med sortering:
sql = "SELECT * FROM table WHERE nick='" & Request.Form("nick") & "' ORDER by nick ASC"

Numeriska värden ska inte omges av några ' men det ska strängar
Hoppas det hjälpte

Permalänk
Hedersmedlem

Saken är den att om det är text du skall kontroller måste du ha ' samt ' mellen texten. t.ex:
SELECT * FROM DB WHERE mail = 'min@mail.com'
Detta krävs inte vid siffror. Då kan man skriva såhär:
SELECT * FROM DB WHERE ID = 1

Alltså måste man göra som dubalizer visade.

EDIT: Oj då. Hade visst inte uppdaterat sidan på ett bra tag

Visa signatur

Är du lycklig nu?

Frågor och funderingar angående modereringen tas med mail, inte genom forumet. dennizpop@sweclockers.com