[sql/asp] DELETE error

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
Hey tweakers,

Bij een forum moet je natuurlijk topics (met inhoud) kunnen deleten.
Zo ook bij mijn forum. Daarom had ik deze query in elkaar geprutst. :+
code:
1
2
strSQL = "DELETE tblTopics.*, tblPosts.* FROM tblTopics, TblPosts "
strSQL = strSQL & "WHERE tblTopics.topic_ID = tblPosts.Topic_ID AND tblTopics.topic_id=" & request.QueryString("t")


De query geeft een nogal rare fout als hij hem moet uitvoeren met ASP:
code:
1
2
3
Microsoft JET Database Engine error '80004005'

Record is deleted.


Wat is er in godsnaam fout aan mijn query?! Wie kan me helpen? ;(

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

Kun je wel uit 2 tabellen tegelijk verwijderen? En zo ja, geeft dat in dit geval dan geen problemen met eventuele referentiële sleutels van de posts tabel naar de topics tabel?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
ik doe het wel 1 voor 1, wat maakt het ook uit :+

EDIT/ Dat werkt dus ook niet. het probleem is dat ik MEERDERE posts moet deleten meestal.

topic met 1 post (de ts post) werkt WEL
een topic met replies kan ik niet wegooien :S

[ Voor 65% gewijzigd door Mischa_NL op 20-07-2004 20:22 ]


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 21-05 21:51

pistole

Frutter

Mischa_NL schreef op 20 juli 2004 @ 20:07:
code:
1
2
strSQL = "DELETE tblTopics.*, tblPosts.* FROM tblTopics, TblPosts "
strSQL = strSQL & "WHERE tblTopics.topic_ID = tblPosts.Topic_ID AND tblTopics.topic_id=" & request.QueryString("t")
sinds wanneer geeft je veldnamen op als je records gaat verwijderen?

Ik frut, dus ik epibreer


Verwijderd

Delete from blabla Where blabla is toch de normale syntax?
Raar asterix-gedoe

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
code:
1
2
3
4
strSQL = "DELETE FROM tblTopics, tblPosts "
strSQL = strSQL & "WHERE tblposts.topic_ID =" & request.QueryString("t") & " AND tblTopics.topic_id=" & request.QueryString("t")

adoCon.execute(strSQL)


Dit werkt dus OOK niet, nu de fout:

code:
1
Specify the table containing the records you want to delete.

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
De simpelste oplossing lijkt mij om het met 2 queries te doen. Eerst de posts bij het topic verwijderen, dan het topic zelf.
SQL:
1
2
DELETE FROM tblPosts WHERE Topic_ID = @topicID
DELETE FROM tblTopics WHERE Topic_ID = @topicID


Je zou ook een cascade delete kunnen instellen op de posts-topics foreign key. Dan worden de posts bij een topics automatisch verwijderd als je een topic verwijderd.

| Toen / Nu


Verwijderd

De syntax is Delete Table1, Table2 FROM Table1, Table2 Where ...
Het ligt dus aan die asterixjes :p

(heb het zelf moeten opzoeken, had nog nooit van multiple delete gehoord)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:27

gorgi_19

Kruimeltjes zijn weer op :9

Vraagje; waarom leg je geen relaties met cascading delete? :)
* gorgi_19 gaat trouwens geen opmerkingen maken over SQL Injection.

[ Voor 34% gewijzigd door gorgi_19 op 20-07-2004 22:34 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

gorgi_19 schreef op 20 juli 2004 @ 22:34:
Vraagje; waarom leg je geen relaties met cascading delete? :)
* gorgi_19 gaat trouwens geen opmerkingen maken over SQL Injection.
Dat wordt zijn volgende topic: waar zijn al mijn topics heen :+

Nee, ik denk dat sql injection geen groot gevaar gaat doen ontstaan op deze pagina, want ze is zowiezo - hoop ik - niet toegankelijk voor gewone gebruikers.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:27

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 21 juli 2004 @ 11:37:
[...]
Dat wordt zijn volgende topic: waar zijn al mijn topics heen :+
Dan moet je 'softdeletes' gaan maken. En die cascading zut zorgt er alleen voor dat de relaties die je hebt gelegd afgedwongen worden. :P
Nee, ik denk dat sql injection geen groot gevaar gaat doen ontstaan op deze pagina, want ze is zowiezo - hoop ik - niet toegankelijk voor gewone gebruikers.
Never trust user input. :) Met een beetje pech wordt er gebruik gemaakt van SQL Server; een boze moderator geeft zichzelf dan een paar extra roles. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1