Intereting Posts
jquery $ .post пустой массив Как обнаружить, что пользователи открывают мое приложение Facebook в iframe или прямое URL-адрес Является ли хорошее знание PHP необходимым для создания устанавливаемого шаблона для таких CMS, как WordPress, Joomla или Drupal? single Вставить запрос для вставки нескольких строк в один столбец Функциональность PHP SHA3 Permission denied: /var/www/abc/.htaccess pcfg_openfile: невозможно проверить файл htaccess, убедиться, что он доступен для чтения? Проблемы с отображением арабского текста Неверный тайм-аут PHP cURL Как я могу предоставить страницу с ошибкой в ​​структуре Slim, когда исключение выбрасывается за пределы маршрута? PHP (WAMP) – Exlipse PDT, xDebug: не останавливается в точке останова структуру каталогов для загрузки без сохранения на сервере Ошибка Laravel PDOException в строке Connector.php 55 Переменная «ошибка» не существует в FOSUserBundle :: layout.html.twig в строке 5 Как укоротить строку, не нарезая слова, сохраняя в пределах лимита символов в PHP Адаптер базы данных Zend – сложный запрос MySQL

PHP: почему я не могу дважды зацикливаться на результатах mysqli_fetch_array ()?

Я извлекаю некоторые данные из базы данных mysql. Есть две петли, которые используют один и тот же набор результатов.

while ($row = mysqli_fetch_array($newsQuery)) { echo "<a href='news-article.php?articleId=" .$row["news_id"]."' class='list-group-item active'>".$row["news_title"]."</a>"; } 

Этот цикл заканчивается успехом. то на той же странице у меня следующий цикл.

 while ($row = mysqli_fetch_array($newsQuery)) { echo $row["news_content"]; } 

Этот цикл ничего не возвращает, даже если в таблице есть контент. Когда я пробую это в первом цикле. содержимое отображается правильно. Любая идея о том, что я делаю неправильно.

Solutions Collecting From Web of "PHP: почему я не могу дважды зацикливаться на результатах mysqli_fetch_array ()?"

Из PHP mysqli_fetch_array DOCS :

Возвращает массив, соответствующий выбранной строке или NULL, если для набора результатов, представленного параметром результата, больше нет строк.

Вы используете цикл while в $row = mysqli_fetch_array($newsQuery)

Это означает, что цикл будет продолжаться до тех mysqli_fetch_array($newsQuery) пока mysqli_fetch_array($newsQuery) вернет NULL .

Вот почему вы не можете использовать этот цикл снова, поскольку mysqli завершил получение результатов, и mysqli_fetch_array($newsQuery) теперь возвращает NULL, пока вы не сделаете новый запрос.

Попробуйте сначала заполнить переменную с результатами, затем зациклируйте на эту переменную:

 $results = array(); while ($row = mysqli_fetch_array($newsQuery)) { $results[] = $row; } foreach ($results as $key => $row) { echo "<a href='news-article.php?articleId=" .$row["news_id"]."' class='list-group-item active'>".$row["news_title"]."</a>"; } foreach ($results as $key => $row) { echo $row["news_content"]; } 

В то время как лучше избегать логики, которая приводит к циклическому переходу через результирующий набор в два раза, при необходимости вам нужно вернуть результирующий набор к началу:

 mysqli_data_seek($newsQuery, 0); 

Поскольку вы уже $newsQuery значение $newsQuery Попробуйте этот код

 //temporary save the news content into array $content = array(); $x=0; while ($row = mysqli_fetch_array($newsQuery)) { echo "<a href='news-article.php?articleId=" .$row["news_id"]."' class='list-group-item active'>".$row["news_title"]."</a>"; $content[$x]= $row["news_content"]; $x++; } 

и если вы хотите получить его

 //now retrieve it for($y=0; $y<count($content); $y++) { echo $content[$y]+"<br/>"; }