此问题在此处已有答案:
How can I use mysqli_fetch_array() twice?(4个答案)
21小时前关门了。
我现在是php的新手,但是在做了一些测试之后,我知道while
不能使用两次,但是我不知道如何重置它。
我看到在某些情况下人们使用reset($variable)
,但在我的情况下似乎不起作用。
如果有问题的话,我试图使用mysqli
来检索我的下拉菜单作为一个选择,第一个工作,但第二个根本不工作。
<?php
echo '<select>';
while(list($stateID, $stateName) = $result->fetch_row())
{
echo '<option value="$stateName">';
echo "$stateName";
echo '</option>';
}
echo '</select>';
?>
<br>
<br>
To:
<?php
echo '<select>';
while(list($stateID, $stateName) = $result2->fetch_row())
{
echo '<option value="$stateName">';
echo "$stateName";
echo '</option>';
}
echo '</select>';
?>
另外,如果需要的话,这里是我在mysql中搜索的结果。
<?php
include 'connect.php';
$query = "SELECT * FROM LOCATION";
$result = $mysqli->query($query, MYSQLI_STORE_RESULT);
$result2 = $mysqli->query($query, MYSQLI_STORE_RESULT);
if(!$result) {
echo($mysqli->error);
exit();
}
?>
虽然这个方法可以在我创建了2个变量并得到结果1和2的情况下工作,但我有一种感觉,这不是正确的方法,特别是在我需要一遍又一遍地重用相同代码的情况下。
2条答案
按热度按时间oyxsuwqo1#
在这些
while
语句中,我们所做的是遍历从数据库中获取的行列表。确实,我们不能对列表进行两次迭代 *,所以我们可以尝试一些不同的方法:遍历列表一次,并保存结果以便重复使用。例如:在查询数据库后执行以下操作:
我在这里所做的就是遍历行列表,并将数据保存到一个变量中。现在,您可以使用该变量,而不必尝试访问MySQL结果:
由于数据存储在数组中,因此您可以根据需要多次使用它。
fzwojiic2#
或者,我们可以使用
方法一
(1)使用
free_result()
释放与结果相关的内存,然后(2)再次执行相同的查询。例如,如果我们有一个名为“test”的表,其中包含字段“serial”(auto_increment),并且有几条记录
以下第二次迭代将失败:
但对于下面的代码,第一次和第二次迭代都将成功
方法二
使用
mysqli_data_seek($result, 0);
移回表的第一条记录