0

我正在使用下面的 PHP 和 jQuery 脚本,我正在尝试检查数据库中是否不存在通过的用户名。

PHP

        if(mysqli_query($con, "SELECT id FROM user WHERE user_name='$username'")){
            echo '1'; //If there is a  record match in the Database - Not Available
        } else {
            echo '0'; //No Record Found - Username is available 
        }
    }
?>

jQuery

$(document).ready(function(){
    $("fieldset input[name=username]").change(function(){
        var username = $("fieldset input[name=username]").val();//Get the value in the username textbox
        if(username.length > 3){
            $(".username_status").html('<img src="loader.gif" align="absmiddle">&nbsp;Checking availability...');
            $.ajax({
                type: "POST",  
                url: "/donald/settings/check-username.php",  //file name
                data: "username="+ username,  //data
                success: function(data){
                    console.log("server_response: "+data);
                    if(data == '0'){
                        $(".username_status").html('<font color="Green"> Available </font>');
                    } else  if(data == '1'){  
                        $(".username_status").html('<font color="red">Not Available </font>');
                    }
                } 
            }); 
        } else {
            $(".username_status").html('<font color="#cc0000">Username too short</font>');
        }
        return false;
    });
});

结果总是通过1

4

4 回答 4

3

如果您查看mysqli_query()文档:

失败时返回 FALSE。对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,mysqli_query() 将返回一个 mysqli_result 对象。对于其他成功的查询,mysqli_query() 将返回 TRUE。

因此,对于有效查询,它永远不应该返回FALSE。因此,您可能想要这样做,使用mysqli_result

$q = mysqli_query($con, "SELECT id FROM user WHERE user_name='$username'");
if( $q && $q->num_rows ){
    echo '1';
} else {
    echo '0';
}
于 2013-04-15T10:58:08.887 回答
1

您应该改为检查mysqli_num_rows。 如果执行查询,mysqli_query总是返回 true

尝试将php代码更改为

$resource = mysqli_query($con, "SELECT id FROM user WHERE user_name='$username'");
$rowCount = mysqli_num_rows($resource);  
 if($rowCount > 0){
        echo '1'; //If there is a  record match in the Database - Not Available
    } else {
        echo '0'; //No Record Found - Username is available 
    }
}
于 2013-04-15T11:01:24.310 回答
1

mysqli_query() 每次有正确的查询时都会返回 true,无论其结果如何。您需要使用另一个 mysqli_ 函数,该函数将返回行,即 mysqli_num_rows、_result 或 _fetch_array。

当然,它们每个都有自己的语法,因此您必须检查并正确使用它才能检查是否有结果。即如果 num_rows>0 或 result($query, 0)

于 2013-04-15T10:57:39.723 回答
-1

(mysqli_query($con, "SELECT id FROM user WHERE user_name='$username'"))如果查询正常,将始终评估为 true。这不是你想要的。

于 2013-04-15T10:59:22.483 回答