SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where (fromUser='1') and not (pprivate=1) or (gbMessage LIKE '%%') order by gbDate desc limit 50
söka på id eller keyword
Databaser & SQLur Databashanterare & SQL
28 svar · 863 visningar · startad av WebbisNet · sida 2 av 2
Frågan, av WebbisNet
fortsättning på förra tråden kan nu söka på keyword men då funkar inte id-sökningen id=request.form("id") keyword=request.form("keyword") Set user=objConn.Execute("SELECT FROM tblUsers INNER JOIN tblUsersguestbook ON tblUsers.userID = tblUsersguestbook.fromUser where fromUser='"& id &"' and not pprivate=1 or gbMessage LIKE '%"& keyword &"%' order by gbDate desc limit 50")%>
Läs frågan i sin helhet →Det är inte så konstigt om du får ut allt när villkoren säger att du vill ha ut allt.
Varför har du med sökvillkoret "alla poster som har något eller inget i gbmessage", om det inte är det du ska söka på? Ta bort det ur SQL-frågan.
Dessutom är parenteserna du lagt till helt onödiga. Parenteser skall användas för att gruppera villkor man vill skall gälla tillsammans.
Som sagt, som det är nu så kommer du alltid att få ut allt, om du inte anger ett keyword. AND prioriteras alltid högre än OR.
Set user=objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where fromUser=" & id & " and not pprivate=1 or gbMessage LIKE '%"& keyword &"%' AND " & len(keyword) & ">0 order by gbDate desc limit 50")
@nders skrev:
Det är inte så konstigt om du får ut allt när villkoren säger att du vill ha ut allt.
Varför har du med sökvillkoret "alla poster som har något eller inget i gbmessage", om det inte är det du ska söka på? Ta bort det ur SQL-frågan.Dessutom är parenteserna du lagt till helt onödiga. Parenteser skall användas för att gruppera villkor man vill skall gälla tillsammans.
hur skulle du ha skrivit det då @nders????
Kolla in koden jag angav.
emission skrev:
Som sagt, som det är nu så kommer du alltid att få ut allt, om du inte anger ett keyword. AND prioriteras alltid högre än OR.
Set user=objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where fromUser=" & id & " and not pprivate=1 or gbMessage LIKE '%"& keyword &"%' AND " & len(keyword) & ">0 order by gbDate desc limit 50")
med den koden får jag rätt träff på ID nu men inte på keyword, då får jag
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]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 'and not pprivate=1 or gbMessage LIKE '%tanke%' AND 5 > 0 order
...och den färdiga SQL:en?? Kom ihåg att id måste ha ett värde.
id-t har ju värde när jag skriver ut den
...och den färdiga SQL:en????
