Just nu i M3-nätverket
Gå till innehåll

Delete * funkar inte


Admini

Rekommendera Poster

Hej

Jag kommer hela tiden med märkliga problem, här kommer en till:

 

Får följande felmeddelande:

ADODB.Connection.1 (0x80004005)

SQLState: 4 Native Error Code: 1064 [TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM veckofraga WHERE id= 31' at line 1

veckoadmin.asp, line 21

när jag försöker ta bort en post ur databasen så här:

Conn.Execute "DELETE * FROM veckofraga WHERE id= "& Request.QueryString("delId") &""

 

Jag förstår inte varför det inte funkar, för det har funkat förut.

 

Nån annan som ser felet?

Tack

 

Länk till kommentar
Dela på andra webbplatser

Prova:

 

Conn.Execute "DELETE * FROM veckofraga WHERE id= "& CLng(Request.QueryString("delId"))

 

Du kan även ta bort * - tecknet för du kan inte bara ta bort ett fält utan det blir hela posten som raderas.

 

Länk till kommentar
Dela på andra webbplatser

CLng kan man, kortfattat, säga gör om ett "uttryck till ett heltal"

Du försäkrar dig att det är ett tal som ingår.

 

Japp!

Conn.[color="#0000ff"]Execute[/color] ([GRÅ]"DELETE FROM veckofraga WHERE id= "[/GRÅ])& [color="#0000ff"]CLng[/color]([b]Request[/b].QueryString([GRÅ]"delId"[/GRÅ]))

 

EDIT: Lade till paranteser! Så ska du ha det!

 

EDIT2:

Kolla på: http://www.w3schools.com/

Där kan du söka på olika "konstiga" ord(t ex CLng) så står där en hel del om det. Väldigt bra sida!

 

[inlägget ändrat 2006-01-27 12:35:20 av Micke_skane]

[inlägget ändrat 2006-01-27 12:40:59 av Micke_skane]

Länk till kommentar
Dela på andra webbplatser

Det funkar bra nu med

Conn.Execute "DELETE FROM veckofraga WHERE id= "& Request.QueryString("delId") &""

 

Tack för hjälpen!

 

Länk till kommentar
Dela på andra webbplatser

Det var ju bra!

 

Gick det inte med:

Conn.[color="#0000ff"]Execute[/color] ([GRÅ]"DELETE FROM veckofraga WHERE id= "[/GRÅ])& [b]Request[/b].QueryString([GRÅ]"delId"[/GRÅ])

 

eller

Conn.[color="#0000ff"]Execute[/color] ([GRÅ]"DELETE FROM veckofraga WHERE id= "[/GRÅ])& [color="#0000ff"]CLng[/color]([b]Request[/b].QueryString([GRÅ]"delId"[/GRÅ]))

 

Tack för poängen!

 

Micke

 

[inlägget ändrat 2006-01-27 16:06:12 av Micke_skane]

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Clng är i det här fallet en total performance-buster. Det som händer är att man tar en sträng (dvs request.querystring("något") ) och omvandlar till ett långt heltal, för att sedan låta ASP implicit omvandla tillbaka till en sträng (Execute tar en sträng som parameter).

Vill man försäkra sig om att man verkligen skickar in ett heltal är det detta som gäller:

If IsNumeric(request.querystrig("något")) Then
Conn.Execute "DELETE FROM tabell where id=" & request.querystring("något")
Else
'Felhantering eftersom id inte är numeriskt
End

--

http://ahlkvist.blogspot.com <-- Min blogg, uppdateras emellanåt.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...