webForumDet fria alternativet

Sökmotor och vissa tecken hjälp sökes:

ASP

5 svar · 592 visningar · startad av Megaman

Medlem sedan jan. 2004118 inlägg
Frågan#1

Hej på er!!!

Jag har ett problem som jag gärna vill ha löst. Det uppstår när jag försöker att använda detta tecken vid en sökning mot en databas.

' men det funkar fint med detta ´ varför kan jag inte använda '

Följande fel får jag vid sökningen

Microsoft JET Database Engine error '80040e14' 

Syntax error (missing operator) in query expression 'stamnamn LIKE '%DonTomaso's%' ORDER BY stamnamn ASC'.

Här är koden som plockar ut från sökningen.

			IF Request("sok") <> "" then
				IF Request.Form("sok2") = "stamnamn" then
	
				Set stamnamn = objConn.Execute("SELECT * FROM stamnamn WHERE " & Request("sok2") & " LIKE '%" & Request("sok")& "%' ORDER BY stamnamn ASC")
				SQLCount = "SELECT COUNT(*) AS Antal FROM stamnamn WHERE " & Request("sok2") & "  LIKE '%" & Request("sok")& "%'"
				
				Set namncheck = objConn.Execute("SELECT * FROM stamnamn WHERE stamnamn = '"&Request("sok")&"'")
					IF namncheck.eof then
						Response.Write ("<br><font color='green'><strong>" & strTxtSearchNameIsNotInTheList & "</strong></font>")
					ELSE
						Response.Write ("<br><font color='red'><strong>" & strTxtSearchNameIsInTheList & "</strong></font>")
					END IF
				namncheck.close : set namncheck = nothing	
			ELSE
				sokresultat = fixbug(Request("sok"))
				Set stamnamn = objConn.Execute("SELECT * FROM stamnamn WHERE " & Request("sok2") & " LIKE '%" & sokresultat & "%' ORDER BY stamnamn ASC")
				SQLCount = "SELECT COUNT(*) AS Antal FROM stamnamn WHERE " & Request("sok2") & "  LIKE '%" & sokresultat & "%'"
			END IF
		ELSE
			Set stamnamn = objConn.Execute("SELECT * FROM stamnamn ORDER BY stamnamn ASC")
			SQLCount = "SELECT COUNT(*) AS Antal FROM stamnamn"
		END IF
			IF stamnamn.eof then
				Response.Write("<br><br>" & strTxtCouldNotFindAnyInTheSearch & "<strong>" & Request.Form("sok") & "</strong>")
			ELSE

Sökningen i sig funkar bra förutom att jag inte kan använda ' och jag vill gärna kunna använda detta också.

Medlem sedan juni 20019 519 inlägg
#2

Sök på SQL Injection...

Medlem sedan jan. 2004118 inlägg
#3

NU har jag sökt och testat lite men jag hittar inget som hjälper mig i allafall inte som jag hittar.

Medlem sedan juni 200032 967 inlägg
#4

Vad är fixbug()? Varför kör du bara sökordet genom den funktionen i Else-satsen? Min gissning är att den fixat problemet.

(edit: jag förstår inte heller syftet att köra fixbug i else-satsen, eftersom det du kör fixbug på är en tom sträng...)

Medlem sedan juni 20019 519 inlägg
#5

Megaman skrev:

NU har jag sökt och testat lite men jag hittar inget som hjälper mig i allafall inte som jag hittar.

Då har du inte sökt alls... Du avslutar din sträng med hjälp av din ' i din request.form... detta måste du fixa med att ersätta ' med '' för att du inte ska avsluta strängen och orsakar ett SQL "fel" eller hack. Finns många typer av samma funktion:

Function SafeSql(str)
SafeSql = "" & Replace(str,"'","''")
End Function

och använd denna funktion på samtliga request.form() du använder:

SafeSql(Request.Form("SokOrd"))
Medlem sedan jan. 2004118 inlägg
#6

fixbug är precis det voigtann1 skriver men jag håller med om att det inte var ett bra namn till functionen den är omdöpt till voigtann1 förslag.

Jag hade glömt 2 ställen att sätta in det på det var det som var felet annars så hade jag just fixbug numera SafeSql fast med lite mer i än vad voigtann1 skrev.

I vilket fall som helst så vill jag tacka er båda för hjälpen, jag trodde att jag hade det på alla ställen men stirrade mig troligen blind.

Jag skulle vilja sätta löst på er bägge 2 men voigtann1 var närmast felet.

271 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)