v2.5.2
Giriş yap

mySQL && ||

Anonim
624 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?

Cevap yaz
Cevaplar (3)
tayfunerbilen
1551 gün önce

fetchAll(PDO::FETCH_ASSOC) yerine fetch(PDO::FETCH_ASSOC) dener misin :)

sekiiiiiiiiz
1552 gün önce

<?php

$look = $db->query("SELECT * FROM users WHERE username = '$username' || useremail = '$useremail'")->fetchAll(PDO::FETCH_ASSOC);
       if ($look){
           if ($look['username'] == $username && $look['useremail'] == $useremail){
               echo 'mevcut';
           } elseif ($look['username'] == $username){
               echo 'varkadi!';
           } elseif ($look['useremail'] == $useremail){
               echo 'vareposta';
           }
       }else{
           $sql = $db->prepare("INSERT INTO users SET 
            user_realy_name = ?,
            username = ?,
            user_link = ?,
            userpassword = ?,
            useremail = ?
	    ");

           $ekle = $sql->execute(array(
               $user_realy_name,$username,$user_link,$userpassword,$useremail
           ));

           if($ekle){
               echo 'ok';
           }else{
               echo 'hata';
           }
       }

?>

Hocam öncelikle teşekkür ederim cevap yazdığın için fakat ben çalıştıramadım bu kodları doğrudan kayıt alıyor şuan

tayfunerbilen
1552 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
    }
}