gpt4 book ai didi

javascript - 多次使用 MySQLi 查询结果数组

转载 作者:行者123 更新时间:2023-11-28 01:41:36 25 4
gpt4 key购买 nike

我正在我的网站上制作博客列表部分。我已经决定,当窗口是桌面大小时,我将有一个轮播来滚动浏览不同的博客文章,而当它是移动大小时,它将只是一个包含所有博客文章的列表。

当我尝试重复 while 循环以循环遍历数据库中的所有帖子时,第二次 while 循环似乎不起作用,就好像我将 $row 变量重新分配给包含我的结果的 mysqli_fetch_row() 函数一样,它找不到我的结果。

这是代码:

<div class="section projects">
<span class="heading">Blog</span>
<p>
Here i have compiled a list of articles that i have written. I will continue to update this list.
</p>
<div class="project-list">
<?php

if ($post_results) {
$panel_no = 1;
/* fetch associative array */
while ($row = mysqli_fetch_row($post_results)) {
$result = glob ("posts/".$row[0]."/article-image.*");
echo "<div class='project-list-item'>";
echo "<img src='$result[0]' class='project-list-image' alt='Blog Item Image'>";
echo "<div class='project-heading'>".$row[1]."</div>";
echo "<div class='project-subheading'>".$row[2]."</div>";
echo "</div>";
}
?>
</div>
<div class="carousel">
<div class="chevron left">&laquo</div>
<div class="chevron right">&raquo</div>
<?php
while ($row = mysqli_fetch_row($post_results)){
echo "<div id='panel-". $panel_no ."' class='panel";
if($panel_no == 1){
echo " active";
}
echo "'>";
echo"<img src='".$result[0]."' id='panel-image". $panel_no ."' class='panel-image'>";
echo "<div class='panel-description'>";
echo "<div class='carousel-heading'>".$row[1]."</div>";
echo "<div class='carousel-caption'>".$row[2]."</div>";
echo "</div>";
echo "</div>";
$panel_no = $panel_no + 1;
}
?>
</div>







<?php
/* free result set */
mysqli_free_result($post_results);
}
?>
</div>

后台有一些 JS 控制轮播按钮等,它只是将分配给它的类“事件”的轮播面板设置为 display: block; , 任何没有事件类的都有 display: hidden; .

第一个 while 循环有效,第二个循环无效。 SQL 绝对有效,因为如果我将屏幕移动到移动大小,它会完全按照我想要的方式显示完整列表。

有一些我看不到的东西使面板不出现,感谢您的帮助。

编辑:这是运行此代码时当前输出的 HTML(忽略移动 View 列表项的奇怪格式)。这是页面在移动设备 View 中的时间。
<div class="section projects">
<span class="heading">Blog</span>
<p>
Here i have compiled a list of articles that i have written. I will continue to update this list.
</p>
<div class="project-list">
<div class="project-list-item"><img src="posts/28/article-image.jpg" class="project-list-image" alt="Blog Item Image"><div class="project-heading">Cars in a City</div><div class="project-subheading">This is an article about cars in a city.</div></div><div class="project-list-item"><img src="posts/29/article-image.jpg" class="project-list-image" alt="Blog Item Image"><div class="project-heading">Whitehaven Marina</div><div class="project-subheading">dsahidhsai</div></div><div class="project-list-item"><img src="posts/30/article-image.jpg" class="project-list-image" alt="Blog Item Image"><div class="project-heading">fcdsfds</div><div class="project-subheading">sadasdsa</div></div><div class="project-list-item"><img src="posts/31/article-image.jpg" class="project-list-image" alt="Blog Item Image"><div class="project-heading">fcdsfds</div><div class="project-subheading">sadasdsa</div></div><div class="project-list-item"><img src="posts/32/article-image.png" class="project-list-image" alt="Blog Item Image"><div class="project-heading">fvsdvsdc</div><div class="project-subheading">fcdcdsccdscds</div></div> </div>
<div class="carousel">
<div class="chevron left">«</div>
<div class="chevron right">»</div>
</div>







</div>

最佳答案

这里的问题是 mysqli_fetch_row() 将 mysqli 的内部指针移动到下一个结果集。因此,当您再次尝试访问它时,没有数据可供访问。

一种解决方案是在第一个数组之前创建一个空的 PHP 数组并将这些行存储在其中,然后在第二个循环中您通过新数组而不是 fetch_array()。

第一个循环:

   $posts = array();
if ($post_results) {
$panel_no = 1;
/* fetch associative array */
while ($row = mysqli_fetch_row($post_results)) {
$posts[] = $row;
$result = glob ("posts/".$row[0]."/article-image.*");
echo "<div class='project-list-item'>";
echo "<img src='$result[0]' class='project-list-image' alt='Blog Item Image'>";
echo "<div class='project-heading'>".$row[1]."</div>";
echo "<div class='project-subheading'>".$row[2]."</div>";
echo "</div>";
}
}

第二个循环应该是这样的:
foreach($posts as $row){
$result = glob ("posts/".$row[0]."/article-image.*");
echo "<div class='project-list-item'>";
echo "<img src='$result[0]' class='project-list-image' alt='Blog Item Image'>";
echo "<div class='project-heading'>".$row[1]."</div>";
echo "<div class='project-subheading'>".$row[2]."</div>";
echo "</div>";
}

另一种解决方案是再次运行相同的查询( 这是一种不好的做法 ),除非没有其他方法可以这样做。

关于javascript - 多次使用 MySQLi 查询结果数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50412700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com