MySQL Query bir değer, iki farklı şeyler birine eşit bir veritabanından kayıtları seçme

5 Cevap php

Ben MySQL DB yerden kayıtları almak zorunda:

sentto = "$username"

VEYA

sentto = "everyone"

Bunu nasıl bir MySQL sorgusu koymak istiyorsunuz? Ben birkaç şey denedim, ama onlar çalışıyor görünmüyor:

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'");

Herkes bu bana bildirin lütfen doğru şekilde yapmak için nasıl biliyorsa, şaşkına gibi görünüyor. Bu benim için yeni bir senaryodur. Teşekkür ederiz!

5 Cevap

SELECT * 
FROM pmmessages 
WHERE sentto = '$username' 
    OR sentto = 'everyone'

Sizin yeni sorguya dayalı Edit Chris,:

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

Sizin VE tek başına duruyor (bu sizin VEYA ile çatışıyor) böylece onu değiştirmek gerekir.

Bu onu yeniden

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

Dikkate yorumlarınızı birinden ayrıntı alarak - doğru koşullar kombine emin olmak için "OR" anahtar sözcüğü ve parantez kullanabilirsiniz.

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

Senin sorunun OR, olsa da, o aslında AND öncelik ve parantez eksikliği değildi. Tamamen senin soru atlanmış olduğu çok önemli bir detay "status = unread" için ek sınav oldu.

? Yukarıdaki kullanımına dikkat - MySQL ve PHP, yani birleştirerek ne zaman really, really hazırlanmış ifadeler kullanmak gerekir:

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

(Ya da mysqli eşdeğeri)

Eğer test ediyoruz aynı sütun olduğu gibi, ben IN anahtar sözcüğünü kullanırsınız:

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

Kelime VEYA aradığınız budur:

mysql_query ("SELECT * sentto = '$ kullanici' OR sentto = 'herkes' Mesajlarim DAN");

Herkes gerçek bir değeri ya da tüm sonuçlarını döndürmek için istiyorsun?

Eğer dönmek isterseniz tüm sonuçları böyle bir şey kurmak

if (@sentto is null)
begin

     set @sendto='%'

end

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