webForumDet fria alternativet

Dela upp sträng och lägg in i databas

ASP

5 svar · 267 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Frågan#1

I en sträng från en sökformulär kommer informationen i följande format:

'ett', 'tva', 'tre', osv.

Hur delar jag upp strängen och lägger vart och ett av värdena på en egen rad i en databaskolumn?

Medlem sedan juni 200032 967 inlägg
#2
arrFoo = split("'ett', 'tva', 'tre'", ", ")
for i = 0 to ubound(arrFoo)
      strSQL = "INSERT INTO Foo (Bar) VALUES (" & arrFoo(i) & ")"
      'exekvera
next
Medlem sedan maj 200010 687 inlägg
#3

Hello SQL-injection! :o

Medlem sedan maj 2002821 inlägg
#4

Huh?

Medlem sedan juni 200032 967 inlägg
#5

Jo, SQL injection ska man alltid ha i bakhuvudet. Och om man har det i bakhuvudet är det nog inte en så bra idé att skicka med apostroferna runt värdet, utan lägga till dem när man ska använda värdena i sina sql-frågor. Och replace:a övriga apostrofer så klart...

*kliar sig i huvet en aning...* :r

Ett snabbt förslag till lösning:

*) I formuläret; byt ut apostroferna runt värdena mot något annat som inte finns i värdena, exempelvis ¤.
*) När du tar emot, ta hand om eventuella apostrofer med en replace
*) Replace:a ¤ till ' och kör.

Man kan självklart lösa allt med lite loopar om man nu hellre skulle vilja det...

Medlem sedan maj 200010 687 inlägg
#6

Så här skulle man kunna skriva:

arrFoo = Split("'ett', 'tva', 'tre'", ", ")
For i = 0 To UBound(arrFoo)
	val = arrFoo(i)
	val = Mid(val, 2, Len(val) - 2)
	strSQL = "INSERT INTO Foo(Bar) VALUES('" & Replace(val, "'", "''") & "')"
	'exekvera
Next
279 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)