首页 > 解决方案 > 试图阻止用户注册重复名称但未捕获错误

问题描述

当用户在注册期间输入现有用户名时,我试图显示错误。但是,我的捕获被绕过了,它只是被转发到第二个 sql 查询,因为用户名是主键,所以它失败了。

$sqlx = "SELECT username FROM TBLUSERS WHERE username='".$username."'";
if( mysqli_num_rows(mysqli_query($conn, $sqlx) > 0)){
    echo "Username already exists, choose a different one";
}
else {
    $sql = "INSERT INTO TBLUSERS (USERNAME, PASSWORD, FULLNAME, 
    street_number, street_name, suburb, state, postcode, EMAIL, 
    children_number, Children_name, Children_class, creditcard, exp_month, 
    exp_year) VALUES ('$username', '$password', '$f_name','$street_no', 
    '$street_name', 
    '$suburb','$state','$postcode','$email','$no_child','$s_name', '$s_class', 
    '$credit', '$expiryMonth','$expiryYear')";
    if (mysqli_query($conn, $sql) === TRUE) {
        echo "Thank you for registration";
        mail($to, $subject, $message, $headers);
        echo "<p>The email has been sent to</p>";
        echo "<p>$to</p>";
    }       else {
        echo "Error: Query did not succeed";
    }
}

因此,当我使用现有用户名注册时,我希望“用户名已经存在,请选择其他用户名”而不是“查询未成功:。

标签: phphtml

解决方案


错误在这一行的括号中:

if( mysqli_num_rows(mysqli_query($conn, $sqlx) > 0)){

将其更改为:

if( mysqli_num_rows(mysqli_query($conn, $sqlx)) > 0){

推荐阅读