Запрос Mysqli не работает дважды

Я не могу заставить мои запросы Mysqli работать. Если я прокомментирую одну функцию в своем html, другая функция будет правильно выполнена и наоборот.

function all_posts() { require_once 'database.inc.php'; $mysqli = mysqli_connect($host, $username, $password, $database); $query = mysqli_query($mysqli, "SELECT variable_name, post_name, post_date, post_display FROM blog_posts ORDER BY id DESC LIMIT 5"); if (!$query) echo mysqli_error(); while ($results = mysqli_fetch_assoc($query)) { $post_name = $results['post_name']; $post_date = $results['post_date']; $post_display = $results['post_display']; $variable_name = $results['variable_name']; echo "<a href='posts.php?post={$variable_name}'>"; echo "<div class='entry'>"; echo "<div class='entry_header'>"; echo "<h2>{$post_name}</h2>"; echo "<h3>{$post_date}</h3>"; echo "</div>"; echo "<p>{$post_display}</p>"; echo "</div>"; echo "</a>"; } mysqli_free_result(); } function all_sidebar_posts() { require_once 'database.inc.php'; $mysqli = mysqli_connect($host, $username, $password, $database); $query = mysqli_query($mysqli, "SELECT variable_name, post_name FROM blog_posts ORDER BY id DESC LIMIT 5"); while ($results = mysqli_fetch_assoc($query)) { $post_name = $results['post_name']; $variable_name = $results['variable_name']; echo "<li><a href='posts.php?post=$variable_name'>$post_name</a></li>"; } mysqli_free_result(); } 

Вот html, который я выводил.

 <ul> <?php all_sidebar_posts(); ?> </ul> </div> <div class="content_container"> <?php all_posts(); ?> </div> 

Я попытался использовать mysqli_data_seek(); но не повезло. Возможно, я не использую это правильно? Я просмотрел много вопросов и нашел похожие, но я пробовал их все безрезультатно. Я новичок в программировании, поэтому я могу игнорировать что-то основное. Спасибо всем за помощь!

Вы делаете это неправильно.
Никогда не смешивайте код обработки данных с кодом презентации.

Сначала создайте функцию для получения сообщений:

 function get_posts() { global $mysqli; $sql = "SELECT variable_name, post_name, post_date, post_display FROM blog_posts ORDER BY id DESC LIMIT 5" $result = mysqli_query($mysqli, $sql); if (!$result) trigger_error(mysqli_error()."[$sql]"); $date = array(); while ($row = mysqli_fetch_assoc($result)) { $data[] = $row; } } 

назовите это так

 require_once 'database.inc.php'; $mysqli = mysqli_connect($host, $username, $password, $database); $data = get_posts(); 

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

http://www.php.net/manual/en/mysqli-result.data-seek.php

Обратитесь к руководству по использованию data_seek ();

Возьмем следующий пример:

 $Query = "SELECT * FROM Users WHERE ID='1'"; $TheQuery -> $MySQLi->query($Query); $Results = $TheQuery->fetch_array(MYSQLI_ASSOC); $TheQuery->data_seek(0); // Lets you re-use the query $Count = $TheQuery->num_rows; // Gets the count 

поэтому в вашем случае:

Вы должны выполнить метод процедуры:

 $query = "SELECT Name, CountryCode FROM City ORDER BY Name"; if ($result = mysqli_query($link, $query)) { /* fetch row */ $row = mysqli_fetch_row($result); printf ("City: %s Countrycode: %s\n", $row[0], $row[1]); mysqli_data_seek($result, 0); $row_cnt = mysqli_num_rows($result); /* free result set*/ mysqli_free_result($result); }