За последние 24 часа нас посетил 30521 программист и 1799 роботов. Сейчас ищут 754 программиста ...

Номер строки БД из запроса

Тема в разделе "PHP для новичков", создана пользователем jonathan-grinn, 31 июл 2016.

  1. jonathan-grinn

    jonathan-grinn Новичок

    С нами с:
    6 фев 2016
    Сообщения:
    71
    Симпатии:
    0
    Как я могу узнать номер строки БД из выполненного запроса?

    Вот, выполняю запрос:
    PHP:
    1. $mysqli = new mysqli($host,$user,$pass,$db_name);
    2. $res = $mysqli->query("SELECT * FROM photos WHERE id = {$_GET['id']}");
    3. $row = $res->fetch_assoc();
    И после, я должен узнать позицию данной строки в БД.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Может ты id имел ввиду?
    --- Добавлено ---
    Ну и в коде нет проверок на случай если что-то пойдёт не так.
     
  3. jonathan-grinn

    jonathan-grinn Новичок

    С нами с:
    6 фев 2016
    Сообщения:
    71
    Симпатии:
    0
    не-а, в том то и дело, что мне нужен номер строки, а не id))
    --- Добавлено ---
    Я знаю, это просто запрос к БД и я не использую к нему проверки)
    --- Добавлено ---
    Мне нужно получить значение строки, которая ниже, чем та, что в запросе ($_GET['id'])
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @jonathan-grinn в mysql нету номеров строк, сортируй как хочешь, если у тебя там auto increment на id, то возможно ты хочешь получить запись с большем id с которым запросил.
    Тогда можно применить такую логику, искать id > $_GET['id'] и LIMIT 1, тогда ты просто найдёшь следующий id больше того что ты запросил в $_GET['id'] и всего одну запись запрашиваешь, так как указать можно LIMIT 1.
     
    jonathan-grinn нравится это.
  5. Alex870

    Alex870 Новичок

    С нами с:
    8 дек 2013
    Сообщения:
    121
    Симпатии:
    2
    Добавлю, в других БД их тоже нет. Этим БД и отличается от обычного Excel'я.
    Если у записи (или как ты выражаешься строки) нет уникального идентификатора - БД с ней работать корректно не сможет. Например если ты добавишь 2 абсолютно идентичные записи в таблицу, то и удалить ты их сможешь только парой т.е. все. БД их различать не будет.
     
  6. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    нет.
     
    denis01 нравится это.
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Можно LIMIT указать и что-то с сортировкой придумать.
     
    jonathan-grinn нравится это.
  8. Alex870

    Alex870 Новичок

    С нами с:
    8 дек 2013
    Сообщения:
    121
    Симпатии:
    2
    Емкий ответ, аргументированный :)
    --- Добавлено ---
    Можно указать, но это ничего не даст. Чтобы драйвер понял, что же ему всё-таки нужно удалять - необходимо ЭТО ему (драйверу) сообщить явно.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в бд НЕ СУЩЕСТВУЕТ позиций. Все выборки выдают результат в той сортировке, что указана в запросе. Если она не указана, то нет никаких гарантий очерёдности от запроса к запросу. Раз от разу могут быть другие последовательности. Если ты хочешь сортировку, значит по какой-то колонке надо отсортировать.

    Если у тебя есть желание получить номер строки, значит по какому-то критерию ты хочешь чтобы эти строки были отсортированы. По какой колонке ты хочешь их отсортировать?