我编写了一个包含用户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%之内,如果这是有道理的。
有没有办法忽略这个特定的行,但打印出结果集的其余部分?
答案 0 :(得分:2)
“如果我有用户”则表示您拥有其用户名或ID,对吧?使用AND将条件添加到where子句中。
答案 1 :(得分:1)
您是否只想添加不等于您的WHERE标准:
SELECT USERNAME
FROM USERS
WHERE RATING <> ".$coolnessRating."
AND RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2"
答案 2 :(得分:1)
放弃通常的“使用PDO!您的代码容易受到攻击!” spiel,你会包含另一个AND“not this user”条件
$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'];
}
答案 3 :(得分:1)
只需将其与WHERE子句的另一部分一起过滤掉:
SELECT USERNAME
FROM USERS
WHERE RATING BETWEEN $coolnessRating * 0.8 AND $coolnessRating * 1.2
AND USER_ID != $current_user_id
(显然最后一行取决于列名是什么以及如何存储当前用户ID)
答案 4 :(得分: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和用户名
答案 5 :(得分:0)
为什么不满足你的病情&lt; 20%我不能说,因为你没有提到预期的传递值