Jump to content

PHP SQL Question


ryanfilard

Recommended Posts

I am trying to make my database search only search where private = '$priiv'(Usually 0,1, or 2) but it does not work

 
$query_search = "SELECT * FROM users WHERE username LIKE '%$idea%' OR fname LIKE '%$idea%' OR lname LIKE '%$idea%' OR tags LIKE '%$idea%' AND private = '$priiv'";

 

What am i doing wrong?

Link to comment
https://forums.phpfreaks.com/topic/247085-php-sql-question/
Share on other sites

AND takes precedence over OR so basically, that statement says:

 

SELECT * FROM users 
WHERE username LIKE '%$idea%' 
OR fname LIKE '%$idea%' 
OR lname LIKE '%$idea%' 
(OR tags LIKE '%$idea%' AND private = '$priiv')

So it only checks the private column when checking the tags column.

 

You need to use parenthesis to group the OR's all together:

SELECT * FROM users 
WHERE (username LIKE '%$idea%' 
    OR fname LIKE '%$idea%' 
    OR lname LIKE '%$idea%' 
    OR tags LIKE '%$idea%') 
AND private = '$priiv'

 

or, rearrange it to something easier to read (IMO)

SELECT * FROM users 
WHERE private = '$priiv'
AND (username LIKE '%$idea%' 
    OR fname LIKE '%$idea%' 
    OR lname LIKE '%$idea%' 
    OR tags LIKE '%$idea%') 

 

Link to comment
https://forums.phpfreaks.com/topic/247085-php-sql-question/#findComment-1268968
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.