lbs129Medlem sedan apr. 200899 inlägg 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
MelittaMedlem sedan sep. 2003448 inlägg Testa att ändra:
WHERE namn = " & Request.Querystring("sida")
till
WHERE namn = ' " & Request.Querystring("sida") &" ' "
TravoniMedlem sedan okt. 20041 556 inlägg ...testa (inte) det här:
WHERE namn = ' " & Request.Querystring("sida") &" '; DROP TABLE sidor"
ZaimanMedlem sedan dec. 20014 239 inlägg 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
@ndersMedlem sedan juni 200032 969 inlägg ... och ha absolut inte mellanslag mellan apostrofer och citationstecken.
lbs129Medlem sedan apr. 200899 inlägg
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
@ndersMedlem sedan juni 200032 969 inlägg Då får du ingen träff med SQL-frågan.
lbs129Medlem sedan apr. 200899 inlägg
@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
QuidMedlem sedan juni 20006 025 inlägg Vad har "sida" för värde? Finns det värdet i databasen?
@ndersMedlem sedan juni 200032 969 inlägg 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.
lbs129Medlem sedan apr. 200899 inlägg
@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
lbs129Medlem sedan apr. 200899 inlägg
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?
OveRRidEMedlem sedan feb. 200112 078 inlägg
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
lbs129Medlem sedan apr. 200899 inlägg
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!