ComodoHacker, а вы уверены в своей трактовке вопроса? Не выяснив далали, а сразу кинувшись строчить ответ? Который и не ответ вовсе, а так - досужие рассуждения?
так сортировка не по id
ему надо нужную страницу найти.
скажем, запись при сортировке по названию будет 55 по счету.
при выводе по 10 записей на страницу это будет 6-я.
id тут запоминай-не запоминай, но номер страницы это никак не поможет получить
mr.bob, если я правильно понял проблему, то сортировку всегда делать по поле, id и условие соответственно делать
SELECT count(*)+1 FROM players WHERE score > ? OR (score = ? AND id < ?)
в общем как написано тут https://phpdelusions.net/articles/rank_based_on_sc...
boronick, послушайте, зачем вам вообще база данных? Если всё так накладно.
Храните в текстовом файле, через палочку. Тогда вообще ни одного запроса не понадобится. Вот где профит-то!!!
Самый ужас здесь, конечно, это "а можно в отдельной таблице, но это накладнее".
Удивительно экономный народ - эти программисты.
Нижнее бельё они носят, хотя это очевидно "накладнее", чем без трусов ходить.
А вот о бедной базочке данных прям заботятся, как бы ей "накладнее" не вышло.
alexalexes, насчет "читабельности" я не уверен. Следует помнить, что бессмысленная фича "num_rows" существует только в mysql, другие базы данных как-то обходятся без неё.
запросить count(*) будет, конечно, более осмысленным действием, но опять же, чисто технически это ничем не лучше фетча запрошенной строки.
а обработку ошибок надо отдать исключениям
по умолчанию mysqli не кидает исключения при ошибках
нарушение уникальности - не единственная ошибка, которая возникает при выполнении запроса
данный код будет выдавать "Вы уже оставили заявку" при любых ошибках с БД, затрудняя отладку
в целом этот ответ - типичная попытка решить несуществующую проблему.
fetch вернёт null если запрос не вернул строк, и условие if ($stmt->fetch()) не будет выполнено
AgentSmith72, если вас интересует производительность на уровне регистров процессора и отдельных байт памяти, то РНР - не ваш выбор.
Типичное приложение РНР работает с хранилищами данных к которым обычно ходит по сети. Память сразу выделяет большими кусками. Живет от 1 сотой до единиц секунд. таких обращений к функциям - и в самом РНР, и в хранилищах, к которым он обращается, и в веб сервере - тысячи.
Разница с вашими страданиями по обращению к памяти в несколько порядков. Если заменять разницу в обработке запроса целиком, то увидеть её будет невозможно. В лучшем случае - на специально придуманном тестовом стенде, который измеряет вызовы сферически функций в вакууме
не ссылки, а имена файлов наверное?
ну так их выковырять - дел на 30 секунд.
при том что привести в "человеческий вид" - от 30 минут до двух часов, в зависимости от квалификации исполнителя.
выбор за вами, эстетичность против практичности
попробуйте сами решить задачу тем способом, который предложили