Запуск mysqli_fetch_array из определенной строки - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть несколько записей, которые я использую while($row = $result->fetch_assoc() для итерации по каждой из них, затем я получаю некоторые другие данные из другой таблицы, используя while($row2 = $result2->fetch_assoc(), то есть итерирую также по каждой из них, затем отображаю в таблице HTML: часть данных первой таблицы и часть данных второй таблицы.

Однако, когда я усекаю первую таблицу, а затем вставляю новые записи, второй запрос $result2->fetch_assoc() начинается с начала таблицы и повторяется X раз, что в основном равно количеству строк в первой таблице. Это не то, что я хочу, я хочу вспомнить последнее место итерации из ее таблицы (таблица 2), затем при повторном вызове итерирует только оставшиеся строки во второй таблице, всегда зависимые n раз от первой таблицы.

Я нашел ответ в stackoverflow, который вы можете найти здесь , однако, я не правильно понял: как вы можете сохранить последнее значение LIMIT, поэтому начинать с X id, если $result2->fetch_assoc() снова вызывается?

Я думал о сохранении счетчика в текстовом документе (который увеличивается сначала на цикл while), затем использовал LIMIT от этого определенного числа, но я не совсем понял, как заставить его работать.

Редактировать: вот дополнительная информация:

Таблица "aplikimet" схема:

first table schema

Таблица "aplikimet_2" схема:

second table schema

$sql = "SELECT id, emri, mbiemri, email, telefoni, vendbanimi, datelindja, mesazhi FROM aplikimet";
$sql2 = "SELECT statusi, uid FROM aplikimet_2";
$result = $conn->query($sql);
$result2 = $conn->query($sql2);
if (($result->num_rows > 0) AND ($result2->num_rows>0)){
(html table and th are here)
 while((($row = $result->fetch_assoc()) AND $row2 = $result2->fetch_assoc()){
  (html td are here)

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 07 ноября 2018

каждый раз, когда вы звоните fetch_assoc(), внутренний указатель увеличивается. после последнего элемента вызов возвращает false, поэтому цикл while(...) завершится.

для сброса вы можете позвонить

mysqli_data_seek($result, 0);

или

$result->data_seek(0);

см. здесь

ИМХО, это не отличный способ сделать это. Если вы хотите зациклить несколько раз один и тот же набор строк, вы можете сохранить его в массиве после первого полного цикла. Затем выполните цикл с foreach() вашим массивом все необходимое время (ваше соединение может быть уже закрыто)

Чтобы ограничить количество строк, возвращаемых вашим запросом, используйте предложение SQL LIMIT , которое может иметь различный синтаксис в зависимости от используемой СУБД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...