Как я могу узнать, нахожусь ли я в последней строке в наборе данных?

0

Я был бы признателен за некоторую помощь в этом, у меня есть набор результатов, с которым я пытаюсь работать. Результат содержит 2 поля и любое количество строк.

При вызове fetch_row(), как вы можете определить, прошел ли метод до последней строки?

Я повторяю строки, используя:

while(list($className, $classID) = $result->fetch_row()) { 

  echo "<tr><td>$className has ID $classID.</td></tr>"

// Here, if the loop is for the last time I need to allow some extra code to run
// echo "<tr><td>Last Item.</td></tr>"

}

Я думал о том, что инкрементный счетчик в цикле while сравнивает строку с num_rows, но думал, что должен быть slicker, чтобы сказать, достигли ли вы последней строки

Любые советы очень ценятся. Большое спасибо ShaunMc

  • 0
    почему бы просто не добавить этот код после цикла?
  • 0
    Почему вы получаете столько данных? Если вам нужна только последняя строка, SQL должен быть настроен так, чтобы возвращать это ... если я что-то не упустил.
Теги:

2 ответа

2

Я думал о том, что инкрементный счетчик в цикле while сравнивает строку с num_rows, но думал, что должен быть slicker, чтобы сказать, достигли ли вы последней строки

Нет, я думаю, что на самом деле это единственный способ сделать это, независимо от того, какую оболочку DB вы используете (я предполагаю, что это PDO.)

Это позор: PHP должен иметь что-то вроде этого встроенного, по крайней мере, в конструкциях foreach. Но это не так.

  • 0
    Его наиболее похожий Mysqli, PDO использует имена методов CamelCase.
  • 0
    @Col Я не хочу, чтобы fetch_row возвращал это, но было бы неплохо, если бы у foreach был встроенный индикатор first_row / last_row .
0

fetch_row() возвращает значение null, когда оно попадает в конец набора результатов.

http://php.net/manual/en/mysqli-result.fetch-row.php

Или я чего-то не хватает.

  • 0
    Он, вероятно, хочет сделать что-то условно в структуре цикла, когда он имеет дело с последним результатом, а не после ... если он вызывает fetch_row внутри, а это не последний результат, то он перемещает набор результатов вперед итерацию, пропуская всю предшествующую логику внутри цикл для этого результата. он всегда мог искать ответ, но для этого все равно требовалось бы знать, на какой показатель он рассчитывает.
  • 1
    Ах, ха! В прошлом я делал это с помощью: 1. получить первую строку 2. получить вторую строку 3. второй результат равен нулю (да, обрабатывать) нет первая строка = вторая строка и получить следующую строку (во вторую) и т. Д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню