如何找到某一行在我的数据库表中的位置?
在我的数据库中,我有一堆来自游戏的玩家。它们有ID、name、level、world等列。
我想按级别对它们进行排序,并查看它们在列表中的位置。
到目前为止,我已经尝试过了,但它只打印出0(我设置的起始值)。它似乎没有遍历。
在此之前,我确保名称存储在$name中。
$query = "SELECT * FROM rookstayers ORDER BY level DESC";
$globalPos = 0;
$result = mysql_query($query);
$num = mysql_numrows($result);
$i = 0;
while($i < $num) {
$posName = mysql_result($result, $i, 'name');
if($posName == '$name')
{
$globalPos = $i;
break;
}
$i++;
}如果我的表看起来像这样(按级别排序后):
name - level
Joe - 50
Jacob - 47
Sarah - 34
Anna - 19那么“莎拉”就是3号,安娜4号,等等
我希望位置号在$globalPos中。
我只找到了这方面的纯SQL代码,但我希望它在PHP中。是不是在PHP中做不到呢?
发布于 2015-05-25 05:25:48
我不确定这是否是唯一的问题:
如果使用单引号',则不会为变量解析字符串。如果要将存储在$name中的字符串与存储在$posName中的字符串进行比较,则应使用$posName === $name。您也可以使用$posName === "$name",但双引号是不必要的。
还要注意,mysql函数已弃用。您应该改用mysqli或PDO_MySQL。(参见Choosing an API)
发布于 2015-05-25 08:37:34
<?php
/*
CREATE TABLE results
(name VARCHAR(12) NOT NULL PRIMARY KEY
,score INT NOT NULL
);
INSERT INTO results VALUES
('Anna',19),
('Jacob',47),
('Joe',50),
('Sarah',34);
*/
include('path/to/connection/stateme.nts');
$query = "
SELECT name, score FROM results ORDER BY score DESC;
";
$result = mysqli_query($conn,$query);
$i=1;
while($row = mysqli_fetch_assoc($result)){
echo $i." ".$row['name']." ".$row['score']."<br/>\n";
$i++;
};
?>https://stackoverflow.com/questions/30427753
复制相似问题