为什么我不能两次使用相同的while
?
我想在页面上重复同样的事情而我不能,只需加载第一个。
例:
$rs = $mysqli->query("SELECT * FROM site WHERE id = '".$cliente."' ");
$row = $rs->fetch_assoc();
1(位于网站顶部)
<?php do{ ?>
<option value="<?php echo $ID; ?>">
<?php echo $nome; ?>
</option>
<?php } while ($row = $rs->fetch_assoc()); ?>
而2(位于网站的末尾)
<?php do{ ?>
<option value="<?php echo $ID; ?>">
<?php echo $nome; ?>
</option>
<?php } while ($row = $rs->fetch_assoc()); ?>
谢谢。
将结果存储在数组中,然后在需要的地方循环。否则,您需要在重新循环之前重置结果的光标。
$query = $mysqli->query("SELECT * FROM site WHERE id = '".$cliente."' ");
$result = $query->fetch_all(MYSQLI_ASSOC);
// Loop wherever needed
foreach ($result as $r) {
// Use $r
}
// Loop the result again!
foreach ($result as $r) {
// Use $r
}
还建议您使用预准备语句,而不是使用注入变量的直接查询。
当你执行$rs->fetch_assoc()
时,你要从结果数组中提取行,要在多次使用该条件时再次通过再次执行查询再次弹出$rs
,或者我建议将结果保存到另一个变量并随时使用它这个
$result = $mysqli->query("SELECT * FROM site WHERE id = '".$cliente."' ");
$rs = $result;
$row = $rs->fetch_assoc();
//WHILE 1
<?php do{ ?>
<option value="<?php echo $ID; ?>">
<?php echo $nome; ?>
</option>
<?php } while ($row = $rs->fetch_assoc()); ?>
//$rs is empty now
$rs = $result; //setting $rs again
//WHILE 2
<?php do{ ?>
<option value="<?php echo $ID; ?>">
<?php echo $nome; ?>
</option>
<?php } while ($row = $rs->fetch_assoc()); ?>
第一个循环消耗了MySQL中的所有数据。
所以,第二个循环没有任何消耗。
你能做的是:
从一个数组中获取第一个循环中的所有数据。
第二次使用它。
此外,您正在增加PHP和MySQL之间的服务器访问。
你应该总是倾向于减少PHP和MySQL服务器的访问。