mySQL && ||
Ş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?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
fetchAll(PDO::FETCH_ASSOC)
yerine fetch(PDO::FETCH_ASSOC)
dener misin :)
<?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
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
}
}