1

ユーザーのMySQLテーブルを含むアプリケーションを作成しました。次のコードは、現在のユーザーの涼しさの評価の20%以内の涼しさの評価を持つユーザーをテーブルから検索します。

$query = "SELECT USERNAME FROM USERS WHERE RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) {

    echo $row['USERNAME'];
}

私の問題はこれです。たとえば、ユーザーがいて、そのクール度の評価が20の場合、それが理にかなっている場合は、明らかに自分の評価が評価の20%以内であるため、ユーザー自身が結果セットに返されます。

この特定の行を無視して、結果セットの残りを出力する方法はありますか?

4

6 に答える 6

2

「ユーザーがいる場合」とは、ユーザー名またはIDを持っていることを意味します。ANDを使用してwhere句に条件を追加します。

于 2013-03-22T01:54:44.867 に答える
1

通常の「PDOを使用してください!あなたのコードは脆弱です!」を忘れてください。spiel、別のAND「このユーザーではない」条件を含める

$query = "SELECT USERNAME FROM USERS WHERE RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2 AND USERNAME != ".$user."";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) {

    echo $row['USERNAME'];
}
于 2013-03-22T01:55:34.220 に答える
1

WHERE句の別の部分でフィルターで除外するだけです。

SELECT USERNAME
FROM USERS
WHERE RATING BETWEEN $coolnessRating * 0.8 AND $coolnessRating * 1.2
AND USER_ID != $current_user_id

(明らかに、最後の行は列名と現在のユーザーIDの保存方法によって異なります)

于 2013-03-22T01:56:13.590 に答える
1

WHERE基準と等しくないものを追加したいだけですか?

SELECT USERNAME 
FROM USERS 
WHERE RATING <> ".$coolnessRating." 
    AND RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2"
于 2013-03-22T01:54:51.210 に答える
1

まず、IDやユーザー名などの情報を現在のユーザーから取得する必要があります。

その後、あなたはすることができます

$query = "SELECT USERNAME FROM USERS WHERE RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2 AND id != " . $id;

また

$query = "SELECT USERNAME FROM USERS WHERE RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2 AND id != " . $username;

ここで、$usernameと$idは、現在のユーザーのIDとユーザー名です。

于 2013-03-22T01:58:21.663 に答える
0

なぜあなたの状態が20%未満にならないのか私にはわかりませんが、期待される合格値について言及していなかったためです

于 2013-03-22T01:55:51.037 に答える