Testa att ändra:
WHERE namn = " & Request.Querystring("sida")
till
WHERE namn = ' " & Request.Querystring("sida") &" ' "
14 svar · 946 visningar · startad av lbs129
Hej!
Jag har problem med min Access databaskoppling i ASP. Jag får följande felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/af/index.asp, line 54
Jag är nybörjare på ASP, men har provat allt jag kommer på. Så här ser koden för databaskopplingen ut:
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databas.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM sidor WHERE namn = " & Request.Querystring("sida")
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
%>
Mvh Johan
Testa att ändra:
WHERE namn = " & Request.Querystring("sida")
till
WHERE namn = ' " & Request.Querystring("sida") &" ' "
...testa (inte) det här:
WHERE namn = ' " & Request.Querystring("sida") &" '; DROP TABLE sidor"
Och så ser du till att säkra upp din kod.
Sök efter SQL-injections så förstår du vad jag menar.
Så till sist. Välkommen till wF
... och ha absolut inte mellanslag mellan apostrofer och citationstecken.
Melitta skrev:
Testa att ändra:
WHERE namn = " & Request.Querystring("sida")till
WHERE namn = ' " & Request.Querystring("sida") &" ' "
Tack!
Det löste ett problem! Men nu har jag istället fått ett annat!
Jag får detta felmeddelande:
ADODB.Field error '80020009'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/af/index.asp, line 0
Mvh Johan
Då får du ingen träff med SQL-frågan.
@nders skrev:
Då får du ingen träff med SQL-frågan.
Jo, det har jag förstått, men jag förstår inte varför?
Jag kan lägga upp en länk till databasen så att ni kan kolla om det är något fel. Sidan är helt ny så den innehåller nästan ingen information.
http://www12.asphost4free.com/lbs129/databas.mdb
Detta är den databaskopplingen jag använder:
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databas.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM sidor WHERE namn = ' " & Request.Querystring("sida") &" ' "
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
%>
Mvh Johan
Vad har "sida" för värde? Finns det värdet i databasen?
Quid skrev:
Vad har "sida" för värde? Finns det värdet i databasen?
Sida har värdet start.
index.asp?sida=start
Mvh Johan
Missade du mitt inlägg ovan? Eller har du verkligen mellanslag runt värdena i fältet namn?
@nders skrev:
... och ha absolut inte mellanslag mellan apostrofer och citationstecken.
@nders skrev:
Missade du mitt inlägg ovan? Eller har du verkligen mellanslag runt värdena i fältet namn?
Tack! Nu fungerar det! :D
Zaiman skrev:
Och så ser du till att säkra upp din kod.
Sök efter SQL-injections så förstår du vad jag menar.Så till sist. Välkommen till wF
Nu förstår jag vad det innebär, men jag vet inte vad man ska göra åt det! Kan någon ge mig ett tips?
lbs129 skrev:
Nu förstår jag vad det innebär, men jag vet inte vad man ska göra åt det! Kan någon ge mig ett tips?
När det gäller querystrings som är tal så skall du *alltid* använda en talkonvertering på dem;
.. WHERE id = " & clng(request("id")) & " AND ..
Vid strängar skall du först och främst ersätta enkla apostrofer ( ' ) med dubbla;
.. WHERE name = '" & sqlsafestr(request("name")) & "' AND ..
function sqlsafestr(str)
sqlsafestr = replace(str, "'","''")
end function
OveRRidE skrev:
När det gäller querystrings som är tal så skall du *alltid* använda en talkonvertering på dem;
.. WHERE id = " & clng(request("id")) & " AND ..Vid strängar skall du först och främst ersätta enkla apostrofer ( ' ) med dubbla;
.. WHERE name = '" & sqlsafestr(request("name")) & "' AND ..function sqlsafestr(str) sqlsafestr = replace(str, "'","''") end function
Tack! Jag ska titta på det om jag får tid!