---
title: "Typblandningsfel i villkorsuttryck"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/142015-typblandningsfel-i-villkorsuttryck"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "karlj87"
published: "2006-02-04T21:14:34.000Z"
updated: "2006-02-21T14:21:13.000Z"
replies: 11
views: 2940
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/142015-typblandningsfel-i-villkorsuttryck"
---

# Typblandningsfel i villkorsuttryck

## #1 — karlj87, 2006-02-04T21:14Z

Hej!

Får följande felmeddelande:

```
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.

/las2.asp, line 54
```

Sista raden i följande stycke är rad 54 

```
Set RecSet = Server.CreateObject("ADODB.Recordset")
	SQL = "SELECT * FROM kommentarer WHERE artikelid = " & Request.Querystring("id")
	SQL = SQL & " ORDER BY datum DESC"
	RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
```

Har sökt lite på wF angående problemet men hittade inget svar.  :( Så nu undrar jag om nån av er där ute har lösningen på problemet?

Tack på förhand! (y)

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

## #2 — nitro2k01, 2006-02-04T21:24Z

Jag vet inte lösningen till ditt problem, men däremot ser jag direkt att den koden du använder har ett säkerhetshål, eftersom den möjliggör s k SQL injection.
Se till att omvandla Request.Querystring("id") till ett heltal, annars kan en hackare förändra SQL-frågan, och t ex radera hela din databas.

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

## #3 — cyprys, 2006-02-04T21:31Z

Om du av någon anledning har artikelid som char/text/... istället för numeriskt ska det vara

```
SQL = "SELECT * FROM kommentarer WHERE artikelid = '" & Request.Querystring("id") & "' "
```

> Se till att omvandla Request.Querystring("id") till ett heltal, annars kan en hackare förändra SQL-frågan, och t ex radera hela din databas.

Beror iofs på om trådskaparen kontrollerat värdet tidigare eller inte. En enkel check såsom isnumeric() är aldrig fel i alla fall.

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

## #4 — joel_joel88, 2006-02-05T10:11Z

Du har inga mer SQL satser där problemet kan spöka?

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

## #5 — karlj87, 2006-02-09T18:49Z

Tack för att ni påpekade att min kod var en säkerhetsrisk. (y)   :( 

Iaf så så här hela min kod ut så här:

```
<!-- #include file = "adovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("artiklar/artiklar.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
	SQL = "SELECT * FROM artiklar WHERE id = " & Request.Querystring("id")
	SQL = SQL & " ORDER BY rubrik"
	RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
%>
  <tr> 
    <td class="rubrik"><% =RecSet("rubrik") %></td>
  </tr>
  <tr> 
    <td class="ingress"><% =RecSet("ingress") %></td>
  </tr>
    <tr> 
    <td class="brodtext"><%text = server.htmlencode(RecSet("innehall"))%><%= Replace(text,vbCrLf,"<br>")%></td>
  </tr>
  <tr> 
    <td class="ingress">Skriven av:&nbsp; <a href="mailto:<%=RecSet("epost")%>"><%=RecSet("av")%></a> </td>
  </tr>
  <tr>
    <td class="ingress">Datum:&nbsp; <%=RecSet("datum")%> </td>
  </tr>
    <tr>
    <td><a href="JavaScript:history.back()"><img src="graphs/pil_back.gif" border="0" width="19" height="13" alt=""></a></td>
  </tr>

  <%
RecSet.Close
Connect.Close
Set RecSet = Nothing
Set Connect = Nothing
%>

<%
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("artiklar/artiklar.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
	SQL = "SELECT * FROM kommentarer WHERE artikelid = " & Request.Querystring("ID")
	SQL = SQL & " ORDER BY datum DESC"
[B]	RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic[/B]  <- rad 54
Do Until RecSet.EOF
%>
<%=RecSet("namn")%><br>
<%=RecSet("text")%>
  
    <%
RecSet.MoveNext
Loop
	RecSet.Close
	Connect.Close
	Set RecSet = nothing
	Set Connect = nothing

%>
<%
IF not Request.Form("namn") = "" then
namn = Request.Form("namn")
text = Request.Form("text")
artikelid = Request("id")

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("artiklar/artiklar.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "Select * From kommentarer" 
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic

	RecSet.AddNew
	RecSet("namn") = namn
	RecSet("text") = text
	RecSet("artikelid") = artikelid
	RecSet("datum") = date
	RecSet.Update
	
	RecSet.Close
	Connect.Close
	Set RecSet = nothing
	Set Connect = nothing
	end if
	%>
<tr>
<td>
<form name="form1" method="post" action="las2.asp?<%=request.querystring%>">
  <table width="300" border="0">
    <tr> 
      <td width="75"><b><font face="Verdana" size="1">Namn:</font></b></td>
      <td width="225"> <b><font face="Verdana" size="1"> 
        <input type="text" name="namn" style="border: 1px solid; font-family: verdana; font-size: 8pt">
        </font></b></td>
    </tr>
    <tr> 
      <td width="75"><font face="Verdana" size="1"><b>Innehåll:</b></font></td>
      <td width="225"><font size="1" face="Verdana">&nbsp;&nbsp;&nbsp;</font></td>
    </tr>
  </table>
  <font face="Verdana"> </font>
  <table  border="0">
    <tr> 
      <td><font face="Verdana"> 
        <textarea name="text" wrap="VIRTUAL" cols="30" style="border: 1px solid; font-family: verdana; font-size: 8pt" rows="10"></textarea>
        </font></td>
    </tr>
    <tr>
      <td>
        <input type="submit" name="Skicka" value="Lägg till" style="border: 1px solid; font-family: verdana; font-size: 8pt">
      </td>
    </tr>
  </table>
  <font face="Verdana"> </font> 
</form>
</td>
</tr>
```

och felet blir det här:

```
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.

/las2.asp, line 54
```

Jag skrev in adressen "las2.asp?id=18".

Tack.

/r Inte säkerhetsrik utan säkerhetsrisk.  :)

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

## #6 — @nders, 2006-02-09T18:53Z

Vad är det för datatyp på fältet artikelid (i tabllen kommentarer) då?

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

## #7 — karlj87, 2006-02-09T18:58Z

Text.

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

## #8 — @nders, 2006-02-09T19:02Z

Varför, åh varför?????
Du lagrar ju numeriska ID:n, så byt till taltyp, på momangen!

(Annars gäller ju apostrofer runt strängvärden, precis som cyprys påpekar [här](http://www.webforum.nu/showthread.php?p=1153454#post1153454).)

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

## #9 — karlj87, 2006-02-09T19:03Z

Tackar ännu en gång @nders! (y)

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

## #10 — cyprys, 2006-02-09T20:32Z

> **karlj87 skrev:**
>
> Tackar ännu en gång @nders! (y)

Så lite så.

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

## #11 — vbyrongte, 2006-02-21T14:16Z

> **@nders skrev:**
>
> Ta bort alla apostrofer runt fältvärden för fält som är av typen tal.
> 
> I övrigt: för lättare felsökning; skriv ut den färdiga sql-frågan istället (response.write sqltemp2)
> 
> Slutligen: välkommen till wF! :bire

 Tack för tipset, men det går ungefär lika bra (dvs dåligt). Vad menar du med att skriva ut den färdiga sql-frågan?

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

## #12 — LarsG, 2006-02-21T14:21Z

Vbyrongte: Jag delade tråden så att du får en egen, du kan fortsätta diskussionen där.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/142015-typblandningsfel-i-villkorsuttryck
