У меня есть следующая таблица в моей базе данных нажмите для просмотра
Я ищу, чтобы найти всех, чья user_group
является "членом", а затем помещать свои оценки в массив и печатать имена в порядке убывания в зависимости от их рейтинга. Таким образом, в приведенном примере будет выводиться ted67945<br>ted67942
.
У меня есть этот код
function getInfo($info, $given_username) { // This is only used to get the rating of the given user
require($_SERVER["DOCUMENT_ROOT"]."/movies/scripts/db.php");
$result = mysqli_query($conn, "SELECT ".$info." FROM members WHERE username='$given_username'");
while ($row = mysqli_fetch_array($result)) { // for each member
return $row[$info];
}
}
$result = mysqli_query($conn, "SELECT username FROM members WHERE user_group='member'") or die(mysql_error());
$ratings = Array();
while ($row = mysqli_fetch_array($result)) { // for each member
$name = $row['username'];
if(!empty($name)) {
array_push($ratings, getInfo("rating", $name)); // This puts all people ratings in group "member", into an array
}
}
rsort($ratings);
foreach($ratings as $x) {
echo $x . "<br>";
}
Это, очевидно, выводит числа. Как я могу использовать это для вывода имен на основе их рейтинга?
Почему вы не можете использовать ORDER BY в запросе SQL?
SELECT username FROM members WHERE user_group='member' ORDER BY rating DESC;
Это сортирует ваши данные по рейтингу в порядке убывания. См. Больше.
mysqli
вы должны использовать параметризованные запросы иbind_param
для добавления пользовательских данных в ваш запрос. НЕ используйте интерполяцию или конкатенацию строк для достижения этой цели, поскольку вы создали серьезную ошибку внедрения SQL . НИКОГДА не помещайте$_POST
,$_GET
или любые пользовательские данные непосредственно в запрос, это может быть очень вредно, если кто-то попытается использовать вашу ошибку.