saturdayMedlem sedan jan. 2007133 inlägg Hej,
Har ett skumt problem. Har en databas med 48 rader som i nedan loop ska uppdateras. Scriptet kör igenom utan error, har även prövat skriva ut "sql" med response.write för att se att strängarna loopas ut rätt. Men felet är att databasen aldrig uppdateras...
Någon som kan se varför, jag ser inte vad som är fel och det gör tydligen inte servern heller? (Har kommenterat i koden så att ni enklare kan se vad jag gör.)
for i = 1 to 48
'Variabel som byter namn med loopen för att veta vilket fältnamn som ska hämtas
sku = "sku" & Cstr(i)
'DB uppkoppling
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "minDSN"
'sql sträng
sql = "UPDATE games SET sku = '"& request.form(sku) &"' WHERE id = '" & i &"'"
conn.execute(sql)
next
K@llenMedlem sedan mars 20032 667 inlägg Jag ser tre märkligheter:
1. Har du 48 kolumner i tabellen games som heter sku1, sku2 ... ?
2. Variabeln i är numerisk och ska inte ha ' ' runt sig.
3. Variabeln sku används aldrig till något inne i loopen.
colioneMedlem sedan juni 20014 421 inlägg Vad har du för datatyp på idt i databasen? Just nu behandlar du det som en sträng.
Dessutom är det sql injection varning på request.form(sku)
Edit, K@llen var snabbare.
Men variabeln sku används visst. Nämligen i request.form(sku)
saturdayMedlem sedan jan. 2007133 inlägg Jag ser tre märkligheter:
1. Har du 48 kolumner i tabellen games som heter sku1, sku2 ... ?
*Nej, en kolumn som heter "sku". Däremot när jag skriver ut dem i 48 stycken input text boxar(Där man kan redigera dem) som jag döper till sku1, sku2, osv.
sql = "UPDATE games SET sku = '"& request.form(sku) &"' WHERE id = " & i & ""*
2. Variabeln i är numerisk och ska inte ha ' ' runt sig.
Har prövat med och utan.
3. Variabeln sku används aldrig till något inne i loopen.
Jo, sku är variabeln som sätter namnet på den input text box som scriptet ska hämta data ifrån.(Hoppas jag verkligen i alla fall, den gör det med response.write)
K@llenMedlem sedan mars 20032 667 inlägg
saturday skrev:
Jag ser tre märkligheter:
1. Har du 48 kolumner i tabellen games som heter sku1, sku2 ... ?
*Nej, en kolumn som heter "sku". Däremot när jag skriver ut dem i 48 stycken input text boxar(Där man kan redigera dem) som jag döper till sku1, sku2, osv.
sql = "UPDATE games SET sku = '"& request.form(sku) &"' WHERE id = " & i & ""*
2. Variabeln i är numerisk och ska inte ha ' ' runt sig.
Har prövat med och utan.
3. Variabeln sku används aldrig till något inne i loopen.
Jo, sku är variabeln som sätter namnet på den input text box som scriptet ska hämta data ifrån.(Hoppas jag verkligen i alla fall, den gör det med response.write)
Vad vill du då göra med följande rad?
sku = "sku" & Cstr(i)
saturdayMedlem sedan jan. 2007133 inlägg i bör väl vara INT, förutom när jag gör om det till str för variabeln sku? id i databasen är INT.
saturdayMedlem sedan jan. 2007133 inlägg
K@llen skrev:
Vad vill du då göra med följande rad?
sku = "sku" & Cstr(i)
sku = sku1
sku = sku2
sku = sku3
osv för varje loop
Den färdiga frågan ser ut exempelvis så här:
sql = "UPDATE games SET sku = '123456' WHERE id = '23'"
colioneMedlem sedan juni 20014 421 inlägg K@llen, han använder ju den i sin request.form(sku). Och han sätter fältet sku till skun beroende på vad var loopen är.
Saturday, gör en response.write på det hela och skicka in frågan direkt i databasen och se vad den säger. Du kan prova att göra en liknane select också.
saturdayMedlem sedan jan. 2007133 inlägg
colione skrev:
K@llen, han använder ju den i sin request.form(sku). Och han sätter fältet sku till skun beroende på vad var loopen är.
Saturday, gör en response.write på det hela och skicka in frågan direkt i databasen och se vad den säger. Du kan prova att göra en liknane select också.
Aye, det ska jag göra. Brb.
emissionMedlem sedan dec. 19996 721 inlägg
on error goto 0
'Öppna inte 48 databaskopplingar
'DB uppkoppling
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "minDSN"
for i = 1 to 48
'Variabel som byter namn med loopen för att veta vilket fältnamn som ska hämtas
sku = "sku" & Cstr(i)
'sql sträng
sql = "UPDATE games SET sku = '"& replace(request.form(sku),"'","''") &"' WHERE id = " & i
conn.execute sql,,128
next
conn.close
saturdayMedlem sedan jan. 2007133 inlägg Haha, glöm det. Som vanligt är det alltid något banalt... Som exempelvis fel tabellnamn... ;)
Tack iaf för snabb response, som vanligt.
saturdayMedlem sedan jan. 2007133 inlägg Ah, hade jag missat helt, totalt sant. Fixar.
emission skrev:
on error goto 0
'Öppna inte 48 databaskopplingar
'DB uppkoppling
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "minDSN"
for i = 1 to 48
'Variabel som byter namn med loopen för att veta vilket fältnamn som ska hämtas
sku = "sku" & Cstr(i)
'sql sträng
sql = "UPDATE games SET sku = '"& replace(request.form(sku),"'","''") &"' WHERE id = " & i
conn.execute sql,,128
next
conn.close
K@llenMedlem sedan mars 20032 667 inlägg
colione skrev:
K@llen, han använder ju den i sin request.form(sku). Och han sätter fältet sku till skun beroende på vad var loopen är.
Saturday, gör en response.write på det hela och skicka in frågan direkt i databasen och se vad den säger. Du kan prova att göra en liknane select också.
Såg det. Sveret blev uppdaterat precis när jag svarade.
Jag skulle nog inte gjort på det sättet. Utan uformat skriptet så jag kan uppdatera alla rader i samma fråga.
Något i stil med: (psevdokod)
UPDATE games SET sku = '"& request.form(sku) &"' WHERE id in (" & request.form("IdFromCheckboxar"))
saturdayMedlem sedan jan. 2007133 inlägg
K@llen skrev:
Såg det. Sveret blev uppdaterat precis när jag svarade.
Jag skulle nog inte gjort på det sättet. Utan uformat skriptet så jag kan uppdatera alla rader i samma fråga.
Något i stil med: (psevdokod)
UPDATE games SET sku = '"& request.form(sku) &"' WHERE id in (" & request.form("IdFromCheckboxar"))
Det är fullt möjligt att det är bättre. Detta är dock första gången jag uppdaterar mer än en rad i en databas så detta var den enda lösningen jag kunde komma på.