MySQL query Selecting records from a database where the value is equal to one of two different things

I need to get records from my MySQL database, where:

sentto = "$username"

OR

sentto = "everyone"

How would I put this in a MySQL query? I tried a few things, but they don't seem to work:

mysql_query("SELECT * 
             FROM pmessages 
             WHERE status='unread' 
                 AND sentto='$username' || sentto='everyone'");

mysql_query("SELECT * 
             FROM pmessages 
             WHERE status='unread' 
             AND sentto='$username' 
                 AND sentto='everyone'");

I seem to be at a dead end, if someone knows how to do it right, please let me know. This is a new scenario for me. Thanks!

+3
source share
5 answers
SELECT * 
FROM pmmessages 
WHERE sentto = '$username' 
    OR sentto = 'everyone'

Change Chris based on your new request:

SELECT * 
FROM pmessages 
WHERE status='unread' 
    AND sentto='$username' 
OR sentto='everyone' 

You need to change it so that your AND stands alone (it contradicts your OR).

Rewrite it on this

SELECT * 
FROM pmessages 
WHERE status='unread' 
    AND 
        (sentto='$username' 
            OR sentto='everyone' )
+5
source

- "OR" , , .

SELECT * FROM pmessages WHERE
   status = 'unread'
    AND
  (sentto = ? OR sentto = 'everyone')

OR, AND . , , - "status = unread".

? - MySQL PHP, ..

$sql = "..." # as above
$sth = $db->prepare($sql);
$res = $sth->execute($username);
while ($row = $sth->fetchrow()) {
    ...
}

( mysqli)

+2

, , IN:

SELECT * 
FROM pmessages 
WHERE status='unread' 
AND sentto IN ('everyone', '$username');
+2

OR - , :

mysql_query ( "SELECT * FROM pmessages WHERE sentto = '$ username' OR sentto = 'every'" );

0

?

if you want to return all the results, configure something like this

if (@sentto is null)
begin

     set @sendto='%'

end

mysql_query("SELECT * FROM pmessages WHERE sentto='$username'")
0
source

Source: https://habr.com/ru/post/1707115/


All Articles