我在其中一个页面下显示了一些结果。但是,当我试图在同一页面下两次获得相同的结果时,它没有以所需的方式显示。我已经包含了函数文件并且首先调用了函数。然后我试着两次显示相同的结果。但只有第一个结果显示,第二个结果不显示。这是代码:
require 'functions.php';
$query_result=select_all_published_category();
<div class="control-group">
<label class="control-label">Parent Category Name</label>
<div class="controls">
<select name="category_id">
<?php while($cat_info=mysqli_fetch_assoc($query_result)) {?>
<option value="<?php echo $cat_info['category_id']; ?>"><?php echo $cat_info['category_name']; ?></option>
<?php }?>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label">Parent Category Name 2</label>
<div class="controls">
<select name="category_id2">
<?php while($cat_info_two=mysqli_fetch_assoc($query_result)) {?>
<option value="<?php echo $cat_info_two['category_id']; ?>"><?php echo $cat_info_two['category_name']; ?></option>
<?php }?>
</select>
</div>
</div>
任何人都可以帮助我吗?感谢
答案 0 :(得分:1)
根据mysqli_fetch_assoc manual: -
返回表示所获取行的字符串的关联数组 在结果集中,数组中的每个键代表名称 其中一个结果集的列,如果没有更多的行,则为NULL 结果集。
所以在第一次迭代之后(同时)它是空的。所以你不能直接进行二次迭代。
首先创建一个变量并将所有数据分配给该变量,然后根据需要多次使用它: -
<?php
require 'functions.php';
$query_result=select_all_published_category();
$category = []; //create array
while($cat_info=mysqli_fetch_assoc($query_result)) {
$category[] = $cat_info; //assign whole values to array
}
?>
<div class="control-group">
<label class="control-label">Parent Category Name</label>
<div class="controls">
<select name="category_id">
<?php foreach($category as $cat){?>
<option value="<?php echo $cat['category_id']; ?>"><?php echo $cat['category_name']; ?></option>
<?php }?>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label">Parent Category Name 2</label>
<div class="controls">
<select name="category_id2">
<?php foreach($category as $cat){?>
<option value="<?php echo $cat['category_id']; ?>"><?php echo $cat['category_name']; ?></option>
<?php }?>
</select>
</div>
</div>
答案 1 :(得分:0)
查看mysqli_fetch_assoc
in the manual;
返回表示结果集中获取的行的字符串的关联数组,其中数组中的每个键表示结果集列之一的名称,如果结果集中没有其他行,则返回NULL。 / p>
当您尝试再次检查时,您已经在最后,因此它只返回NULL。
如果您继续阅读该页面,您会看到:
mysqli_data_seek()
- 将结果指针调整为结果中的任意行
...这将让你将指针设置回到开头(0
),这样你就可以从头开始循环。