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

COUNT(*)1行のデータ(この場合は値0のカウント)を返すため、0行ではなく1行になります。

クエリを実行してから、countの値を確認する必要があります。

例:

$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

SQLインジェクションを防ぐために、プリペアドステートメントを使用するmysqli_か使用する必要があります。PDO

集計関数(COUNT)を使用しているため、常に1が返されます。代わりに、テーブルから列を選択してください。

SELECT profile_name FROM ...

ただし、プロファイルが存在するかどうかの確認のみに関心がある場合は、を使用してmysqli_num_rowsください。プロファイルが存在するかどうかを確認してデータを返す場合は、を使用しますmysqli_fetch_assoc

于 2013-02-15T21:46:26.070 に答える