Нужно вывести на каком месте находится определённый пользователь (будет отображаться в его профиле). Код (Text): <? $top = mysqli_fetch_assoc(mysqli_query($db,"SELECT DENSE_RANK() OVER(ORDER BY rating) AS top FROM users WHERE login LIKE '".$_GET['login']."'")); ?> URL Так оно выводится: Код (Text): <td>Место в топе: <b><?=$top['top']?></b></td> Но выдаёт ошибку: Код (Text): Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in...
видимо в mysqli_fetch_assoc прилетает не mysqli_result, а false Попробуйте отдебажить Код (Text): <? var_dump(mysqli_query($db,"SELECT DENSE_RANK() OVER(ORDER BY rating) AS top FROM users WHERE login LIKE '".$_GET['login']."'"); ?> А вообще к коду 2 замечания: 1. $_GET['login'] нужно экранировать перед запросом 2. LIKE у вас видимо не сработает как задумано — искомую строку нужно обрамлять, хотя бы, % Иначе непонятно, зачем LIKE, если можно просто знак равно?
Гуглить учись. Это одна из самых распространенных ошибок. Sql запрос не корректный. Дебаж. mysqli_error --- Добавлено --- Откуда выкопал DENSE_RANK? Ты расширением от mysql подключаешься к mssql?
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(ORDER BY rating) AS top FROM users WHERE login LIKE 'Assassin-3009'' at line 1 --- Добавлено --- http://www.sql-tutorial.ru/ru/book_rank_dense_rank_functions.html
Ты не думаешь а ждешь готовый ответ. В таких случаях я отвечаю гугли. Я помог с твоей проблемой о которой ты писал в самом начале, проблема в sql.
Сюда обратился после долгих исканий в гугле, как раз-таки. Что запрос некорректный, это и так ясно было...
PHP: $login = mysqli_real_escape_string($db,$_GET['login']); $top=mysqli_fetch_assoc(mysqli_query($db,"select rating from users where login='$login'")); if (!empty($top)) echo '<td>Место в топе: <b>'.$top['rating'].'</b></td>';
http://guglite.ru/?q=DENSE_RANK+mysql http://stackoverflow.com/questions/...ql-like-dense-rank-and-row-number-like-oracle Нет?
Код (Text): SELECT COUNT(DISTINCT rating) as top FROM users WHERE rating >= (SELECT rating FROM users WHERE login='$login' LIMIT 1);