Jag har en sträng tex. med värdena: "param1=test1& param2=tackar& param3=sportspegeln"
Dessa värden vill jag spara i en MSSQL-databas där tabellnamnen är densamma som parameternamnen.
med koden nedan får jag värdena såhär:
param1=test1
param2=tackar
param3=sportspegeln
inputString = Request.Querystring("inputString")
myArray = Split(inputString,"&")
for i=0 to Ubound(myArray)
Response.Write myArray(i)
next
Men hur gör jag nästa sväng när jag vill lägga in värdena?
INSERT INTO test(param1,param2,para3) VALUES("test1","tackar","sportspegeln")
Ska man splitta igen, eller finns den nån finurlig loop eller?
arrData = Split(myDecodedString, "&")
For i = 0 To Ubound(arrData)
arrDetail = Split(arrData(i), "=")
param = Trim(arrDetail(0))
val = Trim(arrDetail(1))
if c=1 then
d=","
end if
a = a & d & param
b = b & d & "'"" & " & val & " & ""'"
c=1
Next
strSQL = "INSERT INTO Highscore(" & a & ") VALUES('" & b & "')"
mm, man kan göra så men... jag skulle inte göra så! :)
jag skulle aldrig lägga tabellnamn m.m. i en querystring, absolut inte om man även har tillgång till ms-sqlserver som hanterar stored procedures.
för vad händer om man avbryter en sådan sträng eller "förstör" den? då blir det ju tok!
ex.
param1=test1& param2=tackar& param3=sportspegeln');delete from Highscore;
man lär i och för sig veta tabellnamnet med koden ovan, men ändå, du förstår kanske att det är en stor säkerhetsrisk.
bara som en liten upplysning! :)
Denna kod hade funkat utmärkt om jag inte hade förbisett en liten grej :\
Querysträngen jag tar emot är Base64 kodad, så jag måste avkoda den först, och sedan in i databasen.
Hur bör man göra då?
ps. avkodningen har jag fixat, men sen då?
för att dela upp & lägga in värdena i databasen på rätt ställe.
Jag hade gjort såhär, vilket var en dålig lösning:
'# Hämta Querysträngen
'# Avkoda den lägg den i "myDecodedString"
'# Dela upp parametrarna vid &
arrData = Split(myDecodedString, "&")
For i = 0 To Ubound(arrData)
'# Separera Param & värdet
arrDetail = Split(arrData(i), "=")
param = Trim(arrDetail(0))
val = Trim(arrDetail(1))
'# Separara värdena med komma, dock ej första rundan
if c=1 then
d=","
end if
'# Parametrarna
a = a & d & param
'# Värdena
b = b & d & "'" & val & "'"
'# Räknare för att räkna bort första rundan
c=1
Next
'# Databaskoppling
'# Lägg in parametrarna & värdena i databasen
strSQL = "INSERT INTO Highscore(" & a & ") VALUES(" & b & ")"
262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849