mysql — позиция в таблице

Как я могу найти положение определенной строки в моей таблице базы данных?

В моей базе данных есть куча игроков из игры. У них есть столбцы, такие как ID, имя, уровень, мир и так далее.

Я хочу отсортировать их по уровню и посмотреть, в какой позиции они находятся в списке.

До сих пор я пробовал это, но он печатает только 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?

0

Решение

Я не уверен, что это единственная проблема:

Если вы используете одинарные кавычки 'строка не анализируется для переменных. Если вы хотите сравнить строку, хранящуюся в $name со строкой, хранящейся в $posName, вы должны использовать $posName === $name, Вы также можете использовать $posName === "$name", но двойные кавычки не нужны.

Обратите также внимание, что mysql функции устарели. Вы должны использовать mysqli или же PDO_MySQL вместо. (Увидеть Выбор API)

0

Другие решения

<?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++;
};

?>
0

По вопросам рекламы [email protected]