我创建排名系统并且排名存储在数据库中,我的问题是找到大于或等于值的行到给定用户xp :
它是这样的:
排名表中的排名列表:
名称: Rank1 exp: 400
名称: Rank2 exp: 500
名称: Rank3 exp: 700
$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。
答案 0 :(得分:1)
删除" "大约500,但为了将来的参考,我将其转换为准备好的陈述,因为您的查询并非尽可能安全
if (itemSelected == StadtArray[row]) {
另一个建议。而不是选择> = $ xp和限制为1的位置,为什么不选择您实际需要的范围?在500到700之间所以它不能带回700?
答案 1 :(得分:0)
你确实在查询中放了$xp
的单引号,它可能是一个数值,而不是一个字符串。现在您可能正在将数值与字符串进行比较。
尝试:
$find = $db->query("SELECT * FROM ranks WHERE exp >= $xp LIMIT 1");