我想遍历我的玩家表并为每个玩家运行以下代码,我可以使用以下选项还是使用"else"错误的选项,我需要它运行所有 if 语句以查看是否存在匹配,然后根据需要更新数据库。基本上我需要知道的是我是否在正确的轨道上,或者我应该考虑使用 do,而 foreach,else,elseif,switch 等,下面的代码只是示例。只是试图理解理论。
<?php
$getresult = $conn->query('SELECT id FROM users');
while ($getrow = mysqli_fetch_array($getresult); {
$player = $getrow['id'];
$result = $conn->query("SELECT * FROM scores WHERE player_id='$playerId' ORDER by points ASC");
$row = $result->fetch_array();
$row_count = mysqli_num_rows($result);
if ($row_count...) {
}else{
if ($row_count...) {
}else{
if () {
}else{
}
//SQL update statement would go here..
}
>你可以做一些类似的事情SELECT id FROM playersTable
然后在while
循环中获取player_id,然后在该循环中移动其余代码。这就是你要找的还是我错过了什么?
// $player = $_SESSION['id'];
$playersResult = $conn->query('SELECT id FROM playersTable');
while ($playersRow = mysqli_fetch_array($playersResult); {
$playerId = $playersRow['id'];
$result = $conn->query("SELECT * FROM scores WHERE player_id='$playerId' ORDER by points ASC");
$row = $result->fetch_array();
$row_count = mysqli_num_rows($result);
if ($row_count >= 20) { // checks that at least 10 rows available
$result = $conn->query("SELECT points FROM scores WHERE player_id='$playerId' ORDER by points ASC LIMIT 10"); // select 10 lowest points
while ($row = mysqli_fetch_array($result)) {
$total = array($row['points']);
$sum = array_sum($total);
echo $sum;
}
}
else if ($row_count>=10) { // checks that at least 10 rows available
$result = $conn->query("SELECT points FROM scores WHERE player_id='$playerId' ORDER by points ASC LIMIT 5"); // select 5 lowest points
while ($row = mysqli_fetch_array($result)) {
$total = array($row['points']);
$sum = array_sum($total);
echo $sum;
}
}
//SQL update statement would go here..
}
您可能还想检查您的总和逻辑,而不看到您的表结构 我认为array_sum不会做你想要的。您可以使用SQL SUM()
为您进行计算。