v2.5.2
Giriş yap

mySQL && ||

Anonim
680 defa görüntülendi

Şu sorgu beni çıldırttı ya lütfen bakabilir misiniz

<? $look = $db->query("SELECT * FROM users WHERE username = '$username' || useremail = '$useremail'")->fetchAll(PDO::FETCH_ASSOC);?>

buradaki "||" değilde normalde olması gereken AND diyince sadece 1 ini kontrol ediyor mesela username aynıysa ama eposta farklıysa kayıt alıyo.
ne yapmam gerek sizce?

tayfunerbilen
1762 gün önce

burada ikiside senin kriterinde aslında doğru sorgu yazmışsın. yani username ya da useremail'den birisi eşleşiyorsa sende bunu biliyorsun.
Eğer merak ettiğin hangisinin eşleştiği ve ona göre bir hata mesajı verdirmek ise şöyle yapabilirsin;

$username = "tayfun";
$useremail = "[email protected]";
$look = $db->query("SELECT * FROM users WHERE username = '$username' || useremail = '$useremail'")->fetchAll(PDO::FETCH_ASSOC);
if ($look){
    if ($look['username'] == $username && $look['useremail'] == $useremail){
        // her ikiside eşleşiyor
    } elseif ($look['username'] == $username){
        // kullanıcı adı eşleşiyor
    } elseif ($look['useremail'] == $useremail){
        // eposta eşleşiyor
    }
}