Avatar billede ravnborg Nybegynder
05. oktober 2007 - 16:49 Der er 14 kommentarer og
1 løsning

slet i mysql

Jeg har prøvet at flette et script sammen til at slette en post i en MySQL database. Men den sletter ikke noget!

Hvad er fejlen??

Set objConn = Server.CreateObject("ADODB.Connection")
ConnDSN = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=" & SQLdatabase & "; UID=" & SQLlogin & "; PWD=" & SQLPassword & ";"

Sub OpenConn
  ObjConn.Open ConnDSN
End Sub

Sub CloseConn
  ObjConn.Close
End Sub

Call OpenConn
objConn.Execute("DELETE FROM highscore_spil WHERE bruger_id = '" & Request.form("id") & "'")
Call CloseConn
Avatar billede kalp Novice
05. oktober 2007 - 16:56 #1
objConn.Execute("DELETE FROM highscore_spil WHERE bruger_id = " & Request.form("id") & "")
Avatar billede nielle Nybegynder
05. oktober 2007 - 17:01 #2
Det lille "" i enden er overflødigt:

objConn.Execute("DELETE FROM highscore_spil WHERE bruger_id = " & Request.form("id"))
Avatar billede pidgeot Nybegynder
05. oktober 2007 - 17:08 #3
MySQL er ligeglad med om den får tal som en string. Fejlen er derfor nok en anden - eks. forkert tabelnavn, feltnavn, eller et forbindelsesproblem.
Avatar billede kalp Novice
05. oktober 2007 - 17:10 #4
objConn.Execute("DELETE FROM highscore_spil WHERE bruger_id = " & Request("id") & "")

eller bare

objConn.Execute("DELETE FROM highscore_spil WHERE bruger_id = " & Request.QueryString("id") & "")
Avatar billede nielle Nybegynder
05. oktober 2007 - 17:16 #5
Fejlen - siden at den ikke direkte giver en fejlbesked - er nok at der ikke står noget efter bruger_id. Det kan kalp's bud være være en løsning på - hvis du bruger et link i stedet for en form.

Til en anden gang så er et godt debug-trick at forsøge at udskrive din SQL-streng før at du udføre den. I 9 ud af 10 tilfælde skyldes forkert databaseadfærd nemlig at der simpelthen står noget andet i SQL'en man troede:

Call OpenConn
sql = "DELETE FROM highscore_spil WHERE bruger_id = " & Request.QueryString("id")
Response.Write "DEBUG: " & sql & "<br>"
objConn.Execute(sql)
Call CloseConn

PS: Den der lille '... & ""' er stadig overflødig.
Avatar billede kalp Novice
05. oktober 2007 - 17:21 #6
nielle >> ja eller hvis han benytter en form med poster med GET og ikke POST:)
Avatar billede ravnborg Nybegynder
05. oktober 2007 - 22:13 #7
Så virker det!

nielle og pidgeot opret lige svar.
Avatar billede pidgeot Nybegynder
05. oktober 2007 - 22:23 #8
Den må gå til Nielle - jeg gjorde blot opmærksom på at problemet ikke var at der var ' om værdien :)
Avatar billede nielle Nybegynder
05. oktober 2007 - 22:28 #9
Var det ikke kalp som gav løsningen?
Avatar billede kalp Novice
05. oktober 2007 - 23:24 #10
Det er okay nielle:-)
Du lægger bare et svar eftersom spørger ifølge reglerne selv bestemmer hvem der skal have point.

Point betyder ikke rigtig noget for mig - men tanken gør, så jeg bruger bare min tid på de mange andre brugere som har brug for min hjælp:-)
Avatar billede nielle Nybegynder
06. oktober 2007 - 09:35 #11
Tja, at demonstrere hvordan man debugger er vel også points værd :^)
Avatar billede kalp Novice
06. oktober 2007 - 12:51 #12
nielle >> Hvis du skal demonstrer debugging så bør du også afslutte Response, så den type debugging kan bruges i alle tilfælde:)
Hvis han laver en SQL fejl så ser han aldrig sit output - dvs. en fejl som får siden til at crashe.
Derfor mener jeg ASP debugging af den type bør afsluttes med Response.End() efter Response.Write af den SQL man tester på.

Jeg er opmærksom på, at det i denne situation er underordnet, men der er mange andre hvor det ikke kan bruges:)
Avatar billede nielle Nybegynder
06. oktober 2007 - 16:15 #13
Jeg plejer nu ikke at have noget problem med at se SQL'en - men ja, en Response.End() er måske nok på sin plads.
Avatar billede ravnborg Nybegynder
06. oktober 2007 - 20:19 #14
Jeg er meget taknemmelig for at I alle har brugt tid på at løse problemet.

Jeg har valgt pidgeot da han (som jeg læste det) afviste fejl i SQL-sætningen og pegede på tabelnavn, feltnavn eller forbindelsesproblem.
Jeg er lidt flov over at indrømme at fejlen var i den genre.  :-(

Jeg blev først opmærksom på fejlen da jeg kørte nielle's debug-trick.
Så debug-tricket endte også med at være en del af svaret.

Men igen tak for hjælpen alle sammen.
Avatar billede nielle Nybegynder
07. oktober 2007 - 10:26 #15
Tak for point :^)
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