11. november 2004 - 14:54Der er
32 kommentarer og 1 løsning
SQL fra helvede!
Jeg er ved at lave en advanceret søgning (som i ser på diverse Dating-sider).. Men den SQL driller fandme som.. ja.. jeg ved ikke hvad.. Her er den:
strSQL = "SELECT * FROM tblAuthor WHERE username LIKE '%"&request.form("soegbrugernavnfelt")&"%' AND Real_name LIKE '%"&request.form("soegnavnfelt")&"%' AND DKArea LIKE '%"&request.form("omraadesoeg")&"%' AND Gender LIKE '%"&request.form("koen")&"%' AND Haircolor LIKE '%"&request.form("haarfarve")&"%' AND Eyecolor LIKE '%"&request.form("oejenfarve")&"%' AND Occupation LIKE '%"&request.form("jobsoeg")&"%' AND Education1 LIKE '%"&request.form("uddsoeg")&"%' or Education2 LIKE '%"&request.form("uddsoeg")&"%' AND Location LIKE '%"&request.form("landsoeg")&"%' AND Yahoo LIKE '%"&request.form("stilling")&"%' AND Height >= '%"&request.form("hoejdeminus")&"%' AND Height <= '%"&request.form("hoejdeplus")&"%' AND Weight >= '%"&request.form("vaegtminus")&"%' AND Weight <= '%"&request.form("vaegtplus")&"%'"
Der kommer (heldigvis) ingen fejl.. Men den skriver bare ALT ud fra databasen.. Nogle der kan se et problem?! i need help!! :)
strSQL = "SELECT * FROM tblAuthor WHERE username LIKE '%"&request.form("soegbrugernavnfelt")&"%' AND Real_name LIKE '%"&request.form("soegnavnfelt")&"%' AND DKArea LIKE '%"&request.form("omraadesoeg")&"%' AND Gender LIKE '%"&request.form("koen")&"%' AND Haircolor LIKE '%"&request.form("haarfarve")&"%' AND Eyecolor LIKE '%"&request.form("oejenfarve")&"%' AND Occupation LIKE '%"&request.form("jobsoeg")&"%' AND Education1 LIKE '%"&request.form("uddsoeg")&"%' or Education2 LIKE '%"&request.form("uddsoeg")&"%' AND Location LIKE '%"&request.form("landsoeg")&"%' AND Yahoo LIKE '%"&request.form("stilling")&"%'"
Microsoft JET Database Engine error '80040e14' Syntax error (missing operator) in query expression 'username LIKE '%%' AND Real_name LIKE '%%' AND DKArea LIKE '%%' AND Gender LIKE '%%' AND Haircolor LIKE '%%' AND Eyecolor LIKE '%%' AND Occupation LIKE '%%' AND (Education1 LIKE '%%' or Education2 LIKE '%%') AND Location LIKE '%Denmark%' AND Yahoo LIKE '%'.
/forum/searchresults.asp, line 82
Kan det evt. ikke være noget med at hoejdeminus, hoejdeplus osv. er tal-felter?
strSQL = "SELECT * FROM tblAuthor WHERE username LIKE '%"&request.form("soegbrugernavnfelt")&"%' AND Real_name LIKE '%"&request.form("soegnavnfelt")&"%' AND DKArea LIKE '%"&request.form("omraadesoeg")&"%' AND Gender LIKE '%"&request.form("koen")&"%' AND Haircolor LIKE '%"&request.form("haarfarve")&"%' AND Eyecolor LIKE '%"&request.form("oejenfarve")&"%' AND Occupation LIKE '%"&request.form("jobsoeg")&"%' AND Education1 LIKE '%"&request.form("uddsoeg")&"%' or Education2 LIKE '%"&request.form("uddsoeg")&"%' AND Location LIKE '%"&request.form("landsoeg")&"%' AND Yahoo LIKE '%"&request.form("stilling")&"%' AND Height >= %"&request.form("hoejdeminus")&"% AND Height <= %"&request.form("hoejdeplus")&"% AND Weight >= %"&request.form("vaegtminus")&"% AND Weight <= %"&request.form("vaegtplus")&"%"
Det kræver at de 4 sidste request.form's alle har en værdi. De må ikke være tomme, da det så giver noget i denne stil: ".... and Height >= and Height <= and ..."
mortency > Microsoft JET Database Engine error '80040e14' Syntax error in query expression 'username LIKE '%%' AND Real_name LIKE '%%' AND DKArea LIKE '%%' AND Gender LIKE '%%' AND Haircolor LIKE '%%' AND Eyecolor LIKE '%%' AND Occupation LIKE '%%' AND Education1 LIKE '%%' or Education2 LIKE '%%' AND Location LIKE '%Denmark%' AND Yahoo LIKE '%%''.
fennec > Hvad er det helt præcist du mener? Kan jeg ikke smide ">=" og "<=" om den samme form?
Btw.. Hvis det kan hjælpe.. så ser form'en sådan ud: <tr> <td>Højde mellem:<td> <td colspan="2"> <input type="text" name="hoejdeminus" size="2"> og <input type="text" name="hoejdeplus" size="2">cm. </td> </tr> <tr> <td>Vægt mellem:</td> <td colspan="2"> <input type="text" name="vaegtminus" size="2"> og <input type="text" name="vaegtplus" size="2"> kg. </td> </tr>
fennec > SELECT * FROM tblAuthor WHERE username LIKE '%%' AND Real_name LIKE '%%' AND DKArea LIKE '%%' AND Gender LIKE '%%' AND Haircolor LIKE '%%' AND Eyecolor LIKE '%%' AND Occupation LIKE '%%' AND Education1 LIKE '%%' or Education2 LIKE '%%' AND Location LIKE '%Denmark%' AND Yahoo LIKE '%%' AND Height >= %1% AND Height <= %1% AND Weight >= %% AND Weight <= %%
- er hvad den udskriver.. Jeg skrev dog kun en værdi i Height
Hvis jeg ikke skriver noget i hoejdeminus, hoejdeplus osv. udskriver den: SELECT * FROM tblAuthor WHERE username LIKE '%da%' AND Real_name LIKE '%%' AND DKArea LIKE '%%' AND Gender LIKE '%%' AND Haircolor LIKE '%%' AND Eyecolor LIKE '%%' AND Occupation LIKE '%%' AND (Education1 LIKE '%%' or Education2 LIKE '%%') AND Location LIKE '%Denmark%' AND Yahoo LIKE '%%'
Hvis jeg udfylder dem skriver den: SELECT * FROM tblAuthor WHERE username LIKE '%%' AND Real_name LIKE '%%' AND DKArea LIKE '%%' AND Gender LIKE '%%' AND Haircolor LIKE '%%' AND Eyecolor LIKE '%%' AND Occupation LIKE '%%' AND (Education1 LIKE '%%' or Education2 LIKE '%%') AND Location LIKE '%Denmark%' AND Yahoo LIKE '%%' AND Height >= 10 AND Height <= 200 AND Weight >= 10 AND Weight <= 200
Hvis jeg fjerner ( og ) omkring "or" sætningen virker alle søge-funktionerne fint - udover hoejdeminus, hoejdeplus, vaegtminus og vaegtplus. Men hvis ( og ) er der, udskriver den intet.
Hvordan skal den OR opfattes??? 1. Er det Education1 ELLER Education2. 2. Rr det den ene mængde (Real_name, DKArea...) ELLER den anden (Location, Yahoo...)
Så skal parentesen være der, ellers opfatter den det som mængder. AND er vigtigere end OR, så alle AND bliver kørt først. Den uskrevne regel er derfor altid at have parenteser med, når man bruger OR. Tjek lige dette eks: ... where name='fennec' AND expBruger='yes' OR ProMenber='yes'
Hvis man bruger den som den er, finder den alle dem hvor navnet er 'fennec' og expBruger er 'yes' og alle dem hvor ProMenber er 'YES'. Den opfatter det altså som: ... where (name='fennec' AND expBruger='yes') OR ProMenber='yes'
Men det jeg faktisk ville have var: ... where name='fennec' AND (expBruger='yes' OR ProMenber='yes')
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.