PHP mysql COUNT没有返回而不是0

时间:2013-02-15 21:44:42

标签: php mysql count

我正在尝试检查名称是否存在。查询应返回0,因为该字段为空但返回1。帮助

function profile_exists($user) { //checks that profile exists
    $profile_ex = mysql_query(
        "SELECT COUNT(profile_name) FROM user_info WHERE id = '{$user}'");

    if(!confirm_query($profile_ex)) {
        return false;   
    } else {
        if (mysql_result($profile_ex, 0) == 1) {
            echo mysql_result($profile_ex, 0);
            exit;
            return true;
        } else {
            return false;
        }
    }
}

3 个答案:

答案 0 :(得分:2)

你有一行而不是0行,因为COUNT(*)返回一行数据,在这种情况下,计数的值为0。

您需要运行查询,然后检查count的值。

示例:

$result = mysql_query("SELECT COUNT(*) AS count FROM ...");
$row = mysql_fetch_assoc($result);

if( $row['count'] == 0){
    return False;
}else{
    return True;
}

答案 1 :(得分:1)

你的语法看起来很复杂,试试这个:

$profile_ex = mysql_query("SELECT * FROM user_info WHERE id = '$user'");
$profile_ex = mysql_num_rows($profile_ex);

if ( $profile_ex > 0 ) {
echo "exists"; } else {
echo "doesn't exist";
}

希望这有帮助

答案 2 :(得分:0)

您应该使用mysqli_PDO准备语句来防止SQL注入。

它将始终返回1,因为您正在使用聚合函数(COUNT)。请改为从表中选择一列:

SELECT profile_name FROM ...

但是,如果您只想检查配置文件是否存在,请使用mysqli_num_rows。如果您想检查配置文件是否存在并返回数据,请使用mysqli_fetch_assoc