webForumDet fria alternativet

Problem med Access databaskoppling

14 svar · 946 visningar · startad av lbs129

lbs129Medlem sedan apr. 200899 inlägg
#1

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
#2

Testa att ändra:

WHERE namn = " & Request.Querystring("sida")

till

WHERE namn = ' " & Request.Querystring("sida") &" ' "
TravoniMedlem sedan okt. 20041 556 inlägg
#3

...testa (inte) det här:
WHERE namn = ' " & Request.Querystring("sida") &" '; DROP TABLE sidor"

ZaimanMedlem sedan dec. 20014 239 inlägg
#4

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
#5

... och ha absolut inte mellanslag mellan apostrofer och citationstecken.

lbs129Medlem sedan apr. 200899 inlägg
#6

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
#7

Då får du ingen träff med SQL-frågan.

lbs129Medlem sedan apr. 200899 inlägg
#8

@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
#9

Vad har "sida" för värde? Finns det värdet i databasen?

lbs129Medlem sedan apr. 200899 inlägg
#10

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

@ndersMedlem sedan juni 200032 969 inlägg
#11

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
#12

@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
#13

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
#14

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
#15

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!

129 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)