webForumDet fria alternativet

Avancerad Sökning funktion

27 svar · 1 201 visningar · startad av SGuncel · sida 2 av 2

aasahMedlem sedan mars 20034 471 inlägg
#21

Annorlunda uttryckt:

Ta strängen som är argument till SafeSql, och skriv ut den på raden innan du skickar frågan. Kopiera in värdet på den strängen här (som den ser ut i fönstret) när du kör skriptet .

SGuncelMedlem sedan jan. 2007217 inlägg
#22
<%
IF Request.Querystring("do")="search" then
	Set ObjRS = ObjConn.Execute("SELECT * FROM tblusers WHERE userName LIKE '%"&SafeSQL(Request.Form("userName"))&"%' and userSex LIKE "&SafeSQL(Request.Form("userSex"))&" and userAge BETWEEN "&SafeSQL(Request.Form("userAge"))&" and "&SafeSQL(Request.Form("userAge2"))&" and userLive LIKE '%"&SafeSQL(Request.Form("userLive"))&"%'" & " order by userName")

		IF ObjRS.Eof then
			Response.Write "Inga medlemmar hittades."
		else
%>
<table width="100%"  border="0" cellspacing="0" cellpadding="0" id="table6">
	<tr>
		<td style="width:25%;">Användarnamn</td>
		<td style="width:25%;">Kön</td>
		<td style="width:25%;">Ålder</td>
		<td style="width:25%;">Bor</td>
	</tr>
</table>

<table width="100%"  border="0" cellspacing="0" cellpadding="0" id="table7">
	<tr>
		<td width="100%" style="border-top: 1px solid Silver;"><img src="../_Grafik/Pix.gif" width="0" height="1"></td>
	</tr>
</table>

<%
	Do until ObjRS.Eof
%>
<table width="100%"  border="0" cellspacing="0" cellpadding="0" id="table5">
	<tr>
		<td style="width:25%;"><% Response.Write "<a href=""profil.asp?userId="&Server.HtmlEncode(ObjRS("userId"))&""">"&Server.HtmlEncode(ObjRS("userName"))&"</a>" %></td>
		<td style="width:25%;"><% Response.Write ""&Server.HtmlEncode(ObjRS("userSex"))&"" %></td>
		<td style="width:25%;"><%=Age(DateSerial(ObjRS("userAgeYear"), ObjRS("userAgeMonth"), ObjRS("userAgeDay")))%> år</td>
		<td style="width:25%;"><% Response.Write ""&Server.HtmlEncode(ObjRS("userLive"))&"" %></td>
	</tr>
</table>
<%
ObjRS.Movenext
Loop

ObjRS.Close : Set ObjRS = Nothing
ObjConn.Close : Set ObjConn = Nothing

End if
End if
%>
aasahMedlem sedan mars 20034 471 inlägg
#23

Alltså fortfarande: Visa INTE koden, visa vad som blir resultatet när koden körs.

Alltså... ASP är inte ett språk jag kan, men i princip...

  1. Bryt ut SQL strängen från själva anropet till connect, lagra denna i en variabel.
  2. Skriv ut variabeln på skärmen (ev kan du skriva ut den efter en ip-koll
    av att det just är du som kör skriptet om andra kan köra det också.)
  3. Kopiera den utskrivna variabeln in hit.
    Alltså (med reservation för dåligt ASP kunnande):
sqlQ = "SELECT * FROM tblusers WHERE userName LIKE '%"&SafeSQL(Request.Form("userName"))&"%' and userSex LIKE '%"&SafeSQL(Request.Form("userSex"))&"%' and userAge BETWEEN "&SafeSQL(Request.Form("userAge"))&" and "&SafeSQL(Request.Form("userAge2"))&" and userLive LIKE '%"&SafeSQL(Request.Form("userLive"))&"%'" & " order by userName"
< kod för att visa sqlQ på skärmen >
Set ObjRS = ObjConn.Execute(sqlQ)
SGuncelMedlem sedan jan. 2007217 inlägg
#24

Är de inte samma sak som voigtann1 sa innan och vi testade?

voigtann1Medlem sedan juni 20019 519 inlägg
#25

Vi vill se hur din senaste SQL sträng ser ut som du försöker få igång. Vad ASPn ska göra är inte alls viktigt i detta fall just nu.

SGuncelMedlem sedan jan. 2007217 inlägg
#26

Det här är man senaste SQL Sträng, som jag försöker få igång.

SELECT * FROM tblusers WHERE userName LIKE '%"&SafeSQL(Request.Form("userName"))&"%' and userSex LIKE '%"&SafeSQL(Request.Form("userSex"))&"%' and userAge BETWEEN "&SafeSQL(Request.Form("userAge"))&" and "&SafeSQL(Request.Form("userAge2"))&" and userLive LIKE '%"&SafeSQL(Request.Form("userLive"))&"%'" & " order by userName
voigtann1Medlem sedan juni 20019 519 inlägg
#27

Fortfarande vill vi ha ut din SQL sträng som du försöker generera... dvs vad userName i ditt form innehåller, userSex osv.

aasahMedlem sedan mars 20034 471 inlägg
#28

Det du har postat ovan är hur SQL-strängen ser ut i ditt skript, dvs där du sätter ihop den. MEN det du skickar till databasen när skriptet körs är den evaluerade strängen, och det är DEN vi vill se.

Låt oss säga att din fråga var betydligt enklare:

SELECT * FROM tblusers WHERE userName LIKE '%"&SafeSQL(Request.Form("userName"))&"%"'

Om nu den form som du hämtar värdet ifrån innehåller Kalle så kommer den sträng som skickas till databasen att se ut så här:

SELECT * FROM tblusers WHERE userName LIKE '%Kalle%'

Om formen innehåller urk så skickas:

SELECT * FROM tblusers WHERE userName LIKE '%urk%'

Så:

  1. Kör ditt skript med vilka som helst värden i formuläret vilka borde funka men inte gör det,
  2. Se till att körningen visar din evaluerade SQL-sträng i fönstret.
  3. Klistra in denna här.
125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)