0

我正在尝试检查名称是否存在。查询应返回 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;
        }
    }
}
4

3 回答 3

2

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

您将需要运行查询,然后检查计数的值。

例子:

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

if( $row['count'] == 0){
    return False;
}else{
    return True;
}
于 2013-02-15T22:07:46.467 回答
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";
}

希望这可以帮助

于 2013-02-15T21:51:47.530 回答
0

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

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

SELECT profile_name FROM ...

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

于 2013-02-15T21:46:26.070 回答