Avatar billede turbo2000 Nybegynder
20. september 2009 - 23:13 Der er 5 kommentarer

Problem med sletning

Hej i nedenstående kode laver den exception occurred fejl når jeg prøver at slette data/billeder fra databasen som ikke eksisterer (logisk nok) men er der nogen der kan sætte et tjek ind i nedenstående kode?

if mode = "del" Then

SQL = "SELECT * FROM andelsboliger_typer WHERE andelsbolig_id = " & request("id")
Set x = Conn.Execute ( SQL )
dim fs,f
set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.GetFile("C:\Websites\upload\andelsboliger\" & x("filnavn") & "")
f.Delete
set f=nothing
set fs=Nothing

SQL = "SELECT * FROM andelsboliger_projektspecifikation WHERE andelsbolig_id = " & request("id")
Set x = Conn.Execute ( SQL )
set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.GetFile("C:\Websites\upload\andelsboliger\" & x("filnavn") & "")
f.Delete
set f=nothing
set fs=Nothing

SQL = "SELECT * FROM andelsboliger_billeder WHERE andelsbolig_id = " & request("id")
Set x = Conn.Execute ( SQL )
set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.GetFile("C:\Websites\upload\andelsboliger\" & x("filnavn") & "")
f.Delete
set f=nothing
set fs=Nothing

SQL = "DELETE FROM andelsboliger WHERE andelsbolig_id = " & request("id")
Conn.Execute ( SQL )

SQL = "DELETE FROM andelsboliger_typer WHERE andelsbolig_id = " & request("id")
Conn.Execute ( SQL )
SQL = "DELETE FROM andelsboliger_projektspecifikation WHERE andelsbolig_id = " & request("id")
Conn.Execute ( SQL )
SQL = "DELETE FROM andelsboliger_billeder WHERE andelsbolig_id = " & request("id")
Conn.Execute ( SQL )

Response.redirect "andelsboliger.asp"
end if
Avatar billede terry Ekspert
21. september 2009 - 09:11 #1
Avatar billede bvli Praktikant
21. september 2009 - 11:35 #2
Dør den i din f.Delete - eller er det når du eksekverer dit "DELETE FROM" databasekald?

Den burde ikke fejle i dit databasekald, da den bare vil returnere 0 rows deleted (eller lignende).

Hvis det er i din "f.Delete" - kunne du lave en "IF f.Exist" eller noget tilsvarende.

Hvis du beder om et sted at sætte et check ind i ovennævnte kode, så ville jeg nok sige at du skulle gøre det "alle steder"! Du er virkelig nødt til at review'e dine databasekald. Din kode er så åben for sql injection attacks, at det er ufatteligt, at du stadig har din database :)
Avatar billede turbo2000 Nybegynder
21. september 2009 - 22:32 #3
Hej bvli det ved jeg ikke helt... Nu har jeg prøvet at smide:
if f.exist then
f.Delete
else
end if

ind.. men det funker stadig ikke..
Umiddelbart skal der vel være noget tjek ved de sidste 3?
DELETE FROM andelsboliger_typer
DELETE FROM andelsboliger_projektspecifikation
DELETE FROM andelsboliger_billeder
Avatar billede bvli Praktikant
22. september 2009 - 09:25 #4
Jeg bliver nok nødt til at få hele fejlmeddelelsen inden jeg kan sige noget mere specifikt.

Mine udtalelser omkring check af dine sql-statements går mere på, at du Concat'er dine strenge i stedet for at bruge databaseparametre. En ondsindet person kunne jo skrive noget andet i din "&id=" parameter. Hvis man nu skrev "12 OR (1 = 1);DROP TABLE andelsboliger_billeder; --" i url'n, så kunne man forestille sig, at du var på den. Men det var nu et sidespring.
Avatar billede terry Ekspert
22. september 2009 - 09:38 #5
Try putting an error routine in your code and if you dont want to do that then just put this as your first line of code so that you ignore the error (not always smart to do)





On Error Resume Next
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester