webForumDet fria alternativet

ASP raderar första nollan

ASP

14 svar · 638 visningar · startad av Razofish

Medlem sedan sep. 2000780 inlägg
Frågan#1

Hej.

Hur gör jag för att skicka värdet 0900 från ett ASP-formulär till en MySQL-databas? Någonstanns på väget ändras 0900 till 900 och då blir det fel värde i databasen. Typen på kolumnen är varchar(4) och MySQL hanterar värdet 0900 och jag kör en manuell query.

Medlem sedan nov. 200013 890 inlägg
#2

Det är inte så att du ska ändra kolumnattributet till "Unsigned zerofill"?

Medlem sedan sep. 2000780 inlägg
#3

Ingen skillnad tyvärr, jag tror felet ligger i hur ASP skickar värdet till SQL:n eftersom jag manuellt kan uppdatera från 900 till 0900 via mysqlpromten och PhpMyAdmin.

Medlem sedan apr. 20022 743 inlägg
#4

Visa lite kod då så vi kan se om det är nått fel i den.

Medlem sedan sep. 2000780 inlägg
#5
 <form action="default.asp?url=schedule1&url2=book2&action=save1&id=<%=Request.QueryString("id")%>" method="post">
<input type="text" name="datum" value="<%=Request.Form("dateField")%>" />
<input type="text" name="st" value="<%=Request.Form("st1")&Request.Form("st2")%>" />
<input type="text" name="et" value="<%=Request.Form("et1")&Request.Form("et2")%>" />
<input type="text" name="typ" value="<%=typ%>" />

Detta är sen SQL-strängen.

	SQL = ""
SQL = "UPDATE bookings_main"
SQL = SQL & " SET date = '"&Request.Form("datum")&"',"
SQL = SQL & " resources_id = "&Request.Form("resource")&","
SQL = SQL & " st = "&Request.Form("st")&","
SQL = SQL & " et = "&Request.Form("et")&","
SQL = SQL & " type = "&Request.Form("typ")&""
SQL = SQL & " WHERE id = "&Request.QueryString("id")&";"
MinCon.Execute(SQL)

Jag buggrättar bara en webbapplikation, så tyvärr har företaget varken tid eller pengar att bygga om för början vilket skulle behövas.

Medlem sedan dec. 200012 464 inlägg
#6

SQL-koden då?

Medlem sedan sep. 2000780 inlägg
#7

Skapade inlägget istället för att föhandsgranska, men nu är koden där :)

Medlem sedan dec. 200012 464 inlägg
#8

Strängvärden skall omges av ' i SQL. Egentligen borde MYSQL ge ett typblandningsfel.

Medlem sedan sep. 2000780 inlägg
#9

Vart ska jag ange ' i min kod?

Medlem sedan maj 20018 027 inlägg
#10

Runt vad det nu är som ska vara '0900'.

Medlem sedan dec. 200012 464 inlägg
#11

Det beror på vilken kolumn det är som char. Om det är et t.ex.

SQL = SQL & " et = '" & replace(Request.Form("et"),"'","''") & "',"

sen så bör du läsa på lite om SQL-injection. (Sök i forumet.)

Medlem sedan sep. 2000780 inlägg
#12

Tack så mycket :)

När det gäller SQL-injection är det en kostnadsfråga att gå igenom hela koden. Då vi enbart buggrättar en befintlig applikation som utvecklats av någon mindre kunnig inom området :x

Medlem sedan apr. 20022 743 inlägg
#13

Du tror inte kostnaderna kan bli högre om någon upptäcker att det inte finns nått skydd och väljer att radera innehållet i er databas då?

Medlem sedan feb. 200112 078 inlägg
#14

Jag håller med Poffe; det borde inte bara ligga i ert intresse, utan även i kundens att se till att säkra denna säkerhetsbrist.

Är det en väldigt massiv applikation? Annars hade iallafall jag lagt den tid det tar på att skapa en generell metod som man inkluderar och manglar all sträng-indata genom.

Medlem sedan juni 200032 967 inlägg
#15

Ett litet tillägg: Per, snälla, använd inte [php]-taggarna för asp-kod. De bara förstör! :)

263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)