webForumDet fria alternativet

INSERT-strul

ASP

8 svar · 487 visningar · startad av Emil RT

Medlem sedan feb. 2004200 inlägg
Frågan#1

Har följande tabell i access:

ID:Räknare
falt1: text
falt2:text

Samt följande insert i ASP:

Insert = "INSERT INTO test (falt1, falt2) VALUES ('?', '?')"
objConn.Execute Insert, array("hej", "da")

Saken är den att det är frågetecknena som läggs in i db:n och inte texten.

Har även testat:

Insert = "INSERT INTO test (falt1, falt2) VALUES (?, ?)"
objConn.Execute Insert, array("hej", "da")

Men får då:

[Microsoft][Drivrutin för ODBC Microsoft Access]Felaktigt COUNT-fält

Andledningen till frågetecknen är för att skydda mot SQL injections. Visst är det så man ska göra?

Någon som vet?

Medlem sedan okt. 20041 556 inlägg
#2

Ja du måste använda parametrar, sök lite på wf/asp

Medlem sedan feb. 2004200 inlägg
#3

De mesta trådar på wF om parametriserade frågor handlar om select-satser. Detta är en insert och jag har inte kunnat få fram så mycket om just detta.

Jag har fattat det som att ovanstående är en parametriserad fråga. Har jag fel?

Medlem sedan okt. 20041 556 inlägg
#4

Testa detta:

sqlstmt = "INSERT INTO test (falt1, falt2) VALUES (?, ?)"
Set cmd = server.createobject("ADODB.command")
cmd.activeConnection = objConn
cmd.CommandText = SQLStmt
Set temp = cmd.Execute (, array("foo","bar"))
Set cmd = Nothing
Medlem sedan feb. 2004200 inlägg
#5

(edit.)

Success ...!! Många tack!

Fråga:
Jag har:

 Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db.db")'

för att öppna databasen.

Jag klistrade in din kod rätt in i asp filen och det funkade.

Hur kan din kod som har cmd isf objConn osv hitta min databas?

Vad är skillnaden på command och connection?

Medlem sedan okt. 20041 556 inlägg
#6

cmd.activeConnection = objConn

Medlem sedan okt. 20041 556 inlägg
#7

BTW:
Använd microsoft-Jet-providern i stället.
Mycket bättre.

Medlem sedan feb. 2004200 inlägg
#8

Sorry .. såg det precis:)

Som sagt, många tack!

Medlem sedan okt. 20041 556 inlägg
#9
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db.db")
258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)