webForumDet fria alternativet

INSERT-strul

8 svar · 487 visningar · startad av Emil RT

Emil RTMedlem sedan feb. 2004200 inlägg
#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?

TravoniMedlem sedan okt. 20041 556 inlägg
#2

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

Emil RTMedlem 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?

TravoniMedlem 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
Emil RTMedlem 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?

TravoniMedlem sedan okt. 20041 556 inlägg
#6

cmd.activeConnection = objConn

TravoniMedlem sedan okt. 20041 556 inlägg
#7

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

Emil RTMedlem sedan feb. 2004200 inlägg
#8

Sorry .. såg det precis:)

Som sagt, många tack!

TravoniMedlem 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")
127 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)