Как я могу найти положение определенной строки в моей таблице базы данных?
В моей базе данных есть куча игроков из игры. У них есть столбцы, такие как 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?
Я не уверен, что это единственная проблема:
Если вы используете одинарные кавычки '
строка не анализируется для переменных. Если вы хотите сравнить строку, хранящуюся в $name
со строкой, хранящейся в $posName
, вы должны использовать $posName === $name
, Вы также можете использовать $posName === "$name"
, но двойные кавычки не нужны.
Обратите также внимание, что mysql
функции устарели. Вы должны использовать mysqli
или же PDO_MySQL
вместо. (Увидеть Выбор API)
<?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++;
};
?>