我正在创建一个排名系统,排名存储在数据库中,我的问题是找到大于或等于值的行给定用户xp:
大概是这样的
等级表中的等级列表:
姓名:* 排名1 * 经验:400
姓名:* 排名2 * 经验:500
名称:Rank3 经验:* 七百 *
$xp = "500";
$find = $db->query("SELECT * FROM ranks WHERE exp >= '$xp' LIMIT 1");
if($find->num_rows > 0){
// if a rank with greater than or equal value was found
$rdata = $find->fetch_assoc();
// return rank name
echo $rdata["name"];
}
这返回Rank1,我不知道为什么:(
谁能帮帮我?我对MySQL还不是很了解。
2条答案
按热度按时间9jyewag01#
删除500左右的““,但为了将来的参考,我会将其转换为准备好的语句,因为您的查询并不安全
另一个建议。而不是选择where >= $xp并限制为1,为什么不选择您实际要查找的范围?500到700之间,这样就不会带回700了
iq3niunx2#
在查询中,您确实在
$xp
周围放置了单引号,但它可能是一个数值,而不是字符串。现在您可能正在将数值与字符串进行比较。尝试: