Ошибка синтаксиса выборки рейтинга лидеров mysqli

Я пытаюсь создать систему членов с таблицей лидеров, которая ранжирует пользователей по количеству сердец, которые получают их сообщения. До самой таблицы лидеров все работает отлично. Так как я новичок в mysqli, я погуглил способ получить звание пользователя, не создавая всю таблицу лидеров каждый раз. Я нашел эту тему: MySQL получает рейтинг от лидеров, который использует это решение:

SELECT  uo.*,
(
SELECT  COUNT(*)
FROM    Scores ui
WHERE   (ui.score, -ui.ts) >= (uo.score, -uo.ts)
) AS rank
FROM    Scores uo
WHERE   name = '$name';

Кажется, это имеет смысл, и я понимаю структуру, но я не могу понять, как поместить это в утверждение, которое действительно работает. Я пытаюсь использовать подготовленные операторы нормально, но я не уверен, что это работает с этим синтаксисом (я не мог заставить его работать). В конце концов я превратил все это в следующий код, что привело к отображению «$ count_heart», которое равно 0, и «ничего хорошего».

if ($sql = $db->prepare("SELECT musichearts FROM members WHERE id = ?")) {
$sql->bind_param('i',$id);
$sql->execute();
$sql->bind_result($count_heart);
while ($sql->fetch()) {
if ($sql2 = $db->prepare("SELECT COUNT(*) FROM members WHERE (musichears > ?)")) {
$sql2->bind_param('i',$count_heart);
$sql2->execute();
$col1 = null;
$sql2->bind_result($hearts_musi);
while ($sql2->fetch()) {
echo "counted {$col1} records\n";
}
$sql2->close();
} else {
echo "no good";
}
}
echo $count_heart;
echo $hearts_musi;
}

Любая помощь приветствуется!

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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