---
title: "Söka med '"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/154096-söka-med"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Lorelie"
published: "2006-11-23T12:29:16.000Z"
updated: "2006-11-26T20:19:16.000Z"
replies: 40
views: 1433
page: 1
pages: 3
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/154096-söka-med"
---

# Söka med '

_Sida 1 av 3._

## #1 — Lorelie, 2006-11-23T12:29Z

På min sida har jag en sökfunktion som inte kan söka med ' i namnet, hur gör man för att det ska gå att göra? (<https://www.aramennoc.se> \- \> databasen)

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

## #2 — voigtann1, 2006-11-23T13:32Z

```
sok = request.form("text")
sok = replace(sok,"'","''')
```

sök på SQL Injections på detta forum så får du svar

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

## #3 — Lorelie, 2006-11-23T13:51Z

Har tittat runt lite, men hittar bara att man ska byta ut och säkra och grejja, jag vill kunna söka med ', tex namnet Hagens O'Boy går inte att söka på, då blir det felmeddelanden.

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

## #4 — voigtann1, 2006-11-23T14:04Z

Det gör du ju

exempel:

```
sok = "O'Boy"

function secureText(str)
  secureText= replace(str,"'","''')
end function

SQL = "Select * From något where sokord = '" & secureText(sok) &"'".....
```

skapar en (eller använd en av SQL injection exempel för färdiga funktioner)

Då i SQL bryter du en sträng med ':

Om vi inte har SQLinjection skyddet:

> SELECT \* FROM något WHERE Sokord = 'O'**boy'**

3 st ' i en SQL är aldrig bra ' måste gå jämt ut ... medans Skyddet ger:

> SELECT \* FROM något WHERE Sokord = 'O''boy'

men SQL tolkar ' = som en "text '" dvs den bryter inte sök strängen... och därför får man inget fel meddelande.

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

## #5 — Lorelie, 2006-11-23T14:14Z

Nu tar vi det från början, jag kan inte jättemycket om sånt här  :OO 

```

Function SafeSQL(strText)
    SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "\\'")
End Function

....

SQL = 	"SELECT 	namn,	" & _
	"hast_id,		" & _
	"bild_url		" & _
	"FROM 	hast 	" & _
	"WHERE 		kon = '"& Request.Form("kon")&"' 	      " & _
	"AND 		namn  like  '" & Request.Form("hast")&"%'  " & _
	"And		namn  like  '" & secureText(hast)&"%'	      " & _
	"AND 		namn  <>	  'e'		                   " & _
	"AND		namn  <>	  'u'			      " & _
	"AND		namn  <>	  '&nbsp;'		                   " & _
	"AND		ras     <>	   'Övrig'			      " & _
	"AND 		ras      =	   'Connemara'		       " & _
	"ORDER BY 	namn				        "
```

 

Jag har gjort något fel, men vad   :l

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

## #6 — voigtann1, 2006-11-23T14:16Z

är din variabel hast något?

annars:

.. secureText(Request.Form("hast") ...
osv...
där alla dina Request.forms är ska secureText också vara :D

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

## #7 — voigtann1, 2006-11-23T14:18Z

Såg ett annat fel...

Den heter inte SecureText ditt skydd utan SafeSQL :D

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

## #8 — voigtann1, 2006-11-23T14:19Z

```
SQL = 	"SELECT 	namn,	" & _
	"hast_id,		" & _
	"bild_url		" & _
	"FROM 	hast 	" & _
	"WHERE 		kon = '"& SafeSQL(Request.Form("kon")) &"' 	      " & _
	"AND 		namn  like  '" & SafeSQL(Request.Form("hast"))&"%'  " & _
	"AND 		namn  <>	  'e'		                   " & _
	"AND		namn  <>	  'u'			      " & _
	"AND		namn  <>	  '&nbsp;'		                   " & _
	"AND		ras     <>	   'Övrig'			      " & _
	"AND 		ras      =	   'Connemara'		       " & _
	"ORDER BY 	namn				        "
```

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

## #9 — Lorelie, 2006-11-23T14:29Z

> have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'B%' AND namn \<\> 'e' AND namn \<\> ' 
> /connemara_hittat.asp, line 38

 

Blir det när jag skriver det du skrev sist

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

## #10 — voigtann1, 2006-11-23T14:30Z

secureText Request.Form("hast")

måste ha () i din funktion... men secureText finns ju inte ;) det är SafeSQL

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

## #11 — Lorelie, 2006-11-23T14:46Z

varför är det % bakom ena Request.Formen men inte bakom den andra?

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

## #12 — voigtann1, 2006-11-23T14:49Z

i SQL så med like är % kan träffas framför eller bakom en sträng(konstigt skrivit sorry)

men du har skrivit nu att din sträng måste börja med det som står i request.form("hast") men den kan även innehålla något annat:

vi har en häst som heter Voigtan
om du skriver in voi så träffar du voigtan.. om du skriver  "ta" så kommer du inte hitta Voigtan...

Bättre förklarat:
<http://www.sql-tutorial.net/SQL-LIKE.asp>

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

## #13 — Lorelie, 2006-11-23T15:09Z

Det stämmer ja. Och skriver man "%ta" så kommer man hitta Voigtan .

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

## #14 — Lorelie, 2006-11-23T15:10Z

Det funkar inte, vad är fel? 

> Error Type:
> ADODB.Recordset.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 'b%' AND namn \<\> 'e' AND namn 
> /connemara_hittat.asp, line 39
> 
> 
> Browser Type:

 

Har skrivit den koden du skickade

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

## #15 — Peter S, 2006-11-23T15:14Z

Skriv gärna ut SQL-frågan så kan det bli lättare att upptäcka fel:

```
response.write SQL
response.end
```

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

## #16 — Lorelie, 2006-11-23T15:28Z

> **Peter S skrev:**
>
> Skriv gärna ut SQL-frågan så kan det bli lättare att upptäcka fel:
>
> ```
> response.write SQL
> response.end
> ```

Nu hände ingenting... Eller jo, bakgrundsfärgen kom upp, men ingen text

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

## #17 — Peter S, 2006-11-23T15:37Z

Lägg koden precis under voigtann1:s kod från inlägg #8.

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

## #18 — Lorelie, 2006-11-23T15:39Z

> **Peter S skrev:**
>
> Lägg koden precis under voigtann1:s kod från inlägg #8.

Då blev det

> SELECT namn, hast_id, bild_url FROM hast WHERE kon = 'Valack' AND namn like 'Hagens O\\\\'Boy%' AND namn \<\> 'e' AND namn \<\> 'u' AND namn \<\> ' ' AND ras \<\> 'Övrig' AND ras \<\> 'Okänd' AND ras = 'Connemara' ORDER BY namn

Då sitter felet här någonstans?

```

Function SafeSQL(strText)
    SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "\\'")
End Function
```

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

## #19 — voigtann1, 2006-11-23T16:17Z

```
Function SafeSQL(strText)
    SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "''")
End Function
```

prova det..

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

## #20 — Lorelie, 2006-11-23T16:19Z

> **voigtann1 skrev:**
>
> ```
> Function SafeSQL(strText)
>     SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "''")
> End Function
> ```
>
> prova det..

  :e  Funkar kanon! 

Tur att det finns folk som orkar förklara för oss som är lite okunniga  (y)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/154096-söka-med  
Nästa sida: https://www.webforum.nu/amne/asp/154096-söka-med/page2.md
