---
title: "DELETE WHERE id = i AND i AND i?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/127958-delete-where-id-i-and-i-and-i"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Yoda"
published: "2005-05-10T14:42:10.000Z"
updated: "2005-05-11T12:14:48.000Z"
replies: 7
views: 376
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/127958-delete-where-id-i-and-i-and-i"
---

# DELETE WHERE id = i AND i AND i?

## #1 — Yoda, 2005-05-10T14:42Z

Hej, jag har flera checkboxar på rad. De checkboxar man fyller i ska den raden tas bort från db. Just nu kan man bara fylla i en checkbox i taget, vilket inte är så bra om man vill ta bort flera rader på en gång.
Här tar jag bort från db:

```
...
participantId = Request.Form("participant")
set rs2 = server.CreateObject("adodb.recordset")
sql2 = "DELETE * " & _
           "FROM Participant " & _
           "WHERE id = " & participantId
set rs2 = conn.execute(sql2)
...
```

Och här är mina checkboxar som loopas till så många som det finns rader i tabellen:

```
<form method="post">
    <input name="participant" type="checkbox" value="<%response.write (rs("id"))%>">
</form>
```

När jag ska ta bort flera rader i tabellen så skriver jag ju bara AND i sql-satsen men hur blir det med variabeln participantId? Om flera checkboxar är bockade så ta bort dessa, hur får jag inte det? If...lalala nånting...

Permalänk: https://www.webforum.nu/p/127958

## #2 — LarsG, 2005-05-10T14:51Z

```
sql2 = "DELETE " & _
           "FROM Participant " & _
           "WHERE id in ( " & participantId & ")"
conn.execute sql2,,128
```

Permalänk: https://www.webforum.nu/p/1607862

## #3 — yohpops, 2005-05-10T14:51Z

Du kan inte använda AND, använd IN() eller OR.

```
where id in ("& replace(request.form("participant")," ","") &")
```

Permalänk: https://www.webforum.nu/p/1607863

## #4 — Erik Juhlin, 2005-05-10T15:18Z

Den där koden välkomnar SQL-injection.
Se till att ha någon slags validering av indatat så det bara är siffror, kommatecken och mellanslag som kommer in.
Ett bra pattern för att hitta förbjudna tecken är: \[^\\s\\d,\]

Permalänk: https://www.webforum.nu/p/1607869

## #5 — Yoda, 2005-05-10T21:03Z

Okej, men måste jag inte ha någon loop av något slag som samlar ihop id:na från de checkboxar som är ifyllda?

Ja, just det, förbjudna tecken...hm. Men vad menar du med: \[^\\s\\d,\]?

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

Hm, det fungerade ju LarsG, fantastiskt. Hur kan det egentligen göra det? Vad gör parametrarna i raden, vad är 128?:

```
conn.execute sql2,,128
```

Trodde man behövde en loop...coolt!

Permalänk: https://www.webforum.nu/p/1607995

## #6 — Guffa, 2005-05-10T23:14Z

Request.Form("participant") returnerar ett objekt av type IStringList. Ifall listan innehåller flera värden och du vill ha ut värdet av den, så kommer den att returnera en sträng som är en kommaseparerad lista av värdena.

Ifall du har tre värden i listan, "4", "18" och "42", så kommer du att få en sträng som ser ut så här: "4, 18, 42".

När du använder strängen i din SQL-fråga så får du en fråga som ser ut så här:

"DELETE FROM Participant WHERE id in (4, 18, 42)"

128 är en flagga som talar om att anropet inte ska skapa något recordset. Eftersom du inte hämtar någon data så behöver du ju inget recordset, och då är det ju onödigt att det skapas något eftersom du ändå inte tar hand om det.

Permalänk: https://www.webforum.nu/p/1608018

## #7 — Erik Juhlin, 2005-05-11T06:35Z

\[^\\s\\d,\] är ett regexp-pattern som letar efter otillåtna tecken.
Så här skulle man kunna skriva:

```
Function CheckInputData(ByVal sInputData)
	Dim objRegExp
	Set objRegExp = New RegExp
	objRegExp.Pattern = "[^\s\d,]"
	CheckInputData = Not objRegExp.Test(sInputData)
	Set objRegExp = Nothing
End Function

If Not CheckInputData(participantId) Then
	Response.Write "Incorrect input data."
	Response.End
End If
```

Permalänk: https://www.webforum.nu/p/1608046

## #8 — Yoda, 2005-05-11T12:14Z

Aha, vad bra, tack för tipset Erik. Ska kolla på det.

Permalänk: https://www.webforum.nu/p/1608187

---

Tråden på webben: https://www.webforum.nu/amne/asp/127958-delete-where-id-i-and-i-and-i
