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");如果(!$查询)回声 mysqli_error();而 ($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 "";echo "";echo "";echo "<h2>{$post_name}</h2>";echo "<h3>{$post_date}</h3>";回声</div>";echo "<p>{$post_display}</p>";回声</div>";回声</a>";}mysqli_free_result();}函数 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");而 ($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.
<?php all_sidebar_posts();?>
<div class="content_container"><?php all_posts();?>
我尝试过使用 mysqli_data_seek();
但没有成功.也许我没有正确使用它?我浏览了许多问题并找到了类似的问题,但我都尝试过,但都无济于事.我是编程新手,所以我可能会忽略一些基本的东西.谢谢大家的帮助!
你做错了.
切勿将您的数据操作代码与演示代码混合在一起.
首先,将帖子放入数组:
require_once 'database.inc.php';mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);$mysqli = mysqli_connect($host, $username, $password, $database);$sql = "SELECT variable_name, post_name, post_date, post_displayFROM blog_posts ORDER BY id DESC LIMIT 5"$result = mysqli_query($mysqli, $sql);$data = 数组();而 ($row = mysqli_fetch_assoc($result)) {$data[] = $row;}
然后使用这个 $data
数组在您需要的任何时间显示帖子,只需使用 foreach()
I cannot get my Mysqli queries to both work. If I comment out one function in my html, the other function is properly executed and vice versa.
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();
}
Here is the html that I am outputting to.
<ul>
<?php all_sidebar_posts(); ?>
</ul>
</div>
<div class="content_container">
<?php all_posts(); ?>
</div>
I have tried using mysqli_data_seek();
but haven't had luck. Perhaps I am not using it right? I have browsed many questions and found similar ones but I have tried them all to no avail. I am new to programming so I may be overlooking something basic. Thank you all for the help!
You are doing it wrong way.
Never mix your data manipulation code with presentation code.
First, get the posts into array:
require_once 'database.inc.php';
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect($host, $username, $password, $database);
$sql = "SELECT variable_name, post_name, post_date, post_display
FROM blog_posts ORDER BY id DESC LIMIT 5"
$result = mysqli_query($mysqli, $sql);
$data = array();
while ($row = mysqli_fetch_assoc($result)) {
$data[] = $row;
}
and then use this $data
array to display posts any times you need, simply using foreach()
相关文章