$dungeon = 0;
if($stmt->prepare("SELECT id,name FROM `dungeons` WHERE id > ?")) {
$stmt->bind_param('i',$dungeon);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id,$name);
$stmt2=$stmt;
while($stmt->fetch()) {
echo "<th>".$name."</th>";
$query = "SELECT COUNT(id),AVG(dungeon_percent),MAX(dungeon_percent) FROM `users` WHERE dungeon_current = ?"; $what=$id;
$stmt2->prepare($query);
$stmt2->bind_param('i',$what);
$stmt2->execute();
$stmt2->store_result();
$stmt2->bind_result($howmany,$avg,$max);
$stmt2->fetch();
echo "<td align='center'>".$howmany."</td><td align='center'>".round($avg)."%</td><td align='center'>".$max."%</td></tr>";
}
}
我拥有的是什么。然而,实际上只有4行,它只循环一次?感谢。
答案 0 :(得分:1)
您是否尝试过创建一个新语句,如:
while($stmt->fetch()) {
$query = "SELECT COUNT(id),AVG(dungeon_percent),MAX(dungeon_percent)
FROM `users`
WHERE dungeon_current = ?";
$what=$id;
// prepare your new statement using the connection
$stmt2 = $your_db->prepare($query);
$stmt2->bind_param('i',$what);
$stmt2->execute();
$stmt2->store_result();
$stmt2->bind_result($howmany,$avg,$max);
$stmt2->fetch();
echo "<td align='center'>".$howmany.
"</td><td align='center'>".round($avg).
"%</td><td align='center'>".$max."%</td></tr>";
}
我认为一个好主意是在循环之外准备第二个查询。您还应该能够在循环外调用bind_param()
和bind_result()
,然后只需执行多次。
这是一种更有效的方式来实现同样的目标:
$query = "SELECT COUNT(id), AVG(dungeon_percent), MAX(dungeon_percent)
FROM `users`
WHERE dungeon_current = ?";
$stmt2 = $your_db->prepare($query);
$stmt2->bind_param('i', $id);
$stmt2->bind_result($howmany, $avg, $max);
while($stmt->fetch()) {
$stmt2->execute();
$stmt2->store_result();
$stmt2->fetch();
echo "<td align='center'>".$howmany.
"</td><td align='center'>".round($avg).
"%</td><td align='center'>".$max."%</td></tr>";
}