如何分别检查数据库中是否存在PHP用户名或电子邮件

问题描述:

现在我的代码检查数据库中是否存在用户名和电子邮件变量,因为它们都是唯一键,但是如何使其可以检查每个个别并输出不同的回应?如何分别检查数据库中是否存在PHP用户名或电子邮件

如果用户名存在 - >“该用户名已存在。” 或者电子邮件存在,但用户名不存在 - >“该电子邮件已存在。”

<?php 
    include 'include/connection.php'; 

    $username = mysqli_real_escape_string($conn, $_REQUEST['username']); 
    $password = mysqli_real_escape_string($conn, $_REQUEST['password']); 
    $name = mysqli_real_escape_string($conn, $_REQUEST['name']); 
    $email = mysqli_real_escape_string($conn, $_REQUEST['email']); 

    $sql = "INSERT INTO userdata (username, password, name, email) VALUES ('$username', '$password', '$name', '$email')"; 

    if (mysqli_query($conn, $sql)) { 
    echo "Your account was created successfully, please login to continue."; 
    echo '<form action="login.php"> 
      <input type="submit" name="login" id="login" value="Login" /> 
      </form>'; 
    } else { 
    echo "That username already exists, please try again."; 
    echo '<form action="registration.php"> 
      <input type="submit" name="register" id="register" value="Register" /> 
      </form>'; 
    } 
?> 
+1

下面是完整的解释,请点击此处https://*.com/questions/33129791/check-if-already-a-user-then-insert-into-the-database-php –

+0

@Kheteshkumawat所以我在尝试将其插入数据库之前,应检查用户名或电子邮件是否存在? – ChaCol

+0

我评论链接到完整的解释这个答案首先你选择查询运行比检查重复的条目电子邮件和用户名。 –

一个具有功能和写SQL检查emailusername两个可能的途径。

SELECT username, email from userdata where username = ? OR email = ? 

而且,通过ResultSet循环,并检查是否emailusername存在并返回相应的错误信息。

尝试这个

$checkUserNameSql = "Select Count(username) as username from userdata WHERE username = '".$username."'"; 

$result=mysql_query($checkUserNameSql); 
$data=mysql_fetch_assoc($result); 

echo $data['username']; 

如果你得到一个数,你可以申请你该检查。

+0

'$ result_username = mysqli_query($康恩, “选择的用户名FROM的userdata其中username = $用户名”);' '$ username_count = mysqli_num_rows($ result_username);' '}否则如果($ username_count == 1) {'我尝试了这样的事情,但它说“mysqli_num_rows()期望参数1是mysqli_result” – ChaCol

+0

您的SELECT查询是worng。 '“SELECT username FROM userdate WHERE username ='。$ username。'” –

+0

我修正了这个问题,但现在它完全忽略了我的else语句。如果用户名存在,它会跳到我的else语句,而不是去我的'} else if($ count_username == 1){' – ChaCol

使用下面的代码。首先你需要检查用户名和电子邮件,然后插入记录。

include 'include/connection.php'; 
$username = mysqli_real_escape_string($conn, $_REQUEST['username']); 
    $password = mysqli_real_escape_string($conn, $_REQUEST['password']); 
    $name = mysqli_real_escape_string($conn, $_REQUEST['name']); 
    $email = mysqli_real_escape_string($conn, $_REQUEST['email']); 

    $checkUser = 'select email ,username from userdata where email="'.$email.'" or username = "'.$username.'"'; 
    $result  = mysqli_query($conn,$checkUser); 
    $row   = mysqli_fetch_assoc($result); 
    if(!empty($row)){ 
    if($row['email']==$email){ 
     echo "That email already exists. Please try again"; 
    } 
    else if($row['username']==$username){ 
     echo "That username already exists. Please try again"; 
    } 

    echo '<form action="registration.php"> 
     <input type="submit" name="register" id="register" value="Register" /> 
     </form>'; 
    } 
    else{ 

    $sql = "INSERT INTO userdata (username, password, name, email) VALUES ('$username', '$password', '$name', '$email')"; 
    if (mysqli_query($conn, $sql)) { 
    echo "Your account was created successfully, please login to continue."; 
    echo '<form action="login.php"> 
      <input type="submit" name="login" id="login" value="Login" /> 
      </form>'; 
    } 
    } 
+0

向下投票者好心解释这段代码有什么错? – sheraz