想知道电子邮件或用户名是否已经存在[mysql,php]


want to know whether the email or the username already exists [mysql, php]

如果用户名或电子邮件已经存在于数据库中,我想

$prep_stmt = "SELECT `id` FROM `members` WHERE `email` = ? LIMIT 1";
    $stmt = $this->db->prepare($prep_stmt);
    if ($stmt) {
        $stmt->bind_param('s', $email);
        $stmt->execute();
        $stmt->store_result();
            if ($stmt->num_rows == 1) {
                return "A user with this email address already exists";
            }
     } else {
         return "Database error";
     }

现在我可以对用户名做同样的操作,但我想知道是否有一种方法可以使用mysql

我试着这样做。。。

SELECT `id` FROM `members` WHERE `email` = "user@user.com" OR `username` = "testuser" LIMIT 1

但是,如果电子邮件和用户名相同,它显示没有LIMIT TAG 2 id,我不知道哪一个是用于电子邮件或用户名的,如果我用LIMIT TAG打电话,它会显示一个结果,但我仍然不知道是用户名还是电子邮件是相同的

您可以使用:

SELECT `id`, 
       IF(`email` = "user@user.com",1,0) as foundMail,
       IF`username` = "testuser"   ,1,0) as foundUser
FROM `members` 
WHERE `email` = "user@user.com" 
  OR `username` = "testuser"

如果邮件匹配,foundMail将为1,如果用户匹配,foundUser将为1

关于

试试这个:

<?php
// you should use * for all columns selected instead of id
$stmt="SELECT * FROM members WHERE email=:txtemail LIMIT 1";
$calldata = $db->prepare ($stmt);
$calldata->bindParam(':txtemail', $txtemail, PDO::PARAM_STR,27);
$calldata->execute();
$result = $calldata->fetchColumn();     
if (htmlspecialchars($result) == false){
    //some script if not found
    }
else{
    //some script if found or exists
}
?>