为什么我不能两次使用相同的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()); ?>
谢谢。
答案 0 :(得分:3)
将结果存储在数组中,然后在需要的地方循环。否则,您需要在重新循环之前重置结果的光标。
$ query = $ mysqli-> query(“ SELECT * FROM site WHERE id ='”。$ cliente。“'”);
$ result = $ query-> fetch_all(MYSQLI_ASSOC);
//在需要的地方循环
foreach($ result为$ r){
//使用$ r
}
//再次循环结果!
foreach($ result为$ r){
//使用$ r
}
还建议您使用准备好的语句,而不要使用直接查询中插入变量的语句。
答案 1 :(得分:2)
当您执行$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()); ?>
答案 2 :(得分:1)
第一个循环消耗了MySQL中的所有数据。
因此,第二个循环没有任何消耗。
您可以做的是:
从一个数组中的第一个循环获取所有数据。
第二次使用。
此外,您正在增加PHP和MySQL之间的服务器行程。
您应该始终倾向于减少PHP和MySQL服务器的访问次数。