如何在数据库的数字表中循环,直到得到输入数字php/sql的总和


how to loop through a database table of numbers until you have sum of an input number php/sql

所以基本上,如果你的数据库中有一个表,它看起来像这样:

id::name:numbers
1:::Jack::::4
2:卡特里娜飓风:::2
3:克莱德:::8

我希望在数字列中循环,将数字相互相加,直到达到某个数字输入,然后回声出一行,其中数字相加为。因此,如果你的输入是3,它将用Jack输出行,如果输入是5或6,它将输出Katrina,如果输入从7-14,它将使用clyde输出行
这里我想不通的是,我如何循环通过数字列,将数字相加,直到到达特定的行,然后只回显该特定的行。

我知道如何回声出所有行并为输入字段创建条件,但我似乎一直在掌握如何走得更远。

    $sql = "SELECT medlemsid, navn, lotterinr, tid FROM medlemmer";
    $result = $con->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "| id: " . $row["medlemsid"]. " | - Name: " . $row["navn"]. " " ." | Lotterinr " . $row["lotterinr"]. " | Tid: ". $row["tid"]. "<br>";
    }
} else {
    echo "0 results";
}
if (isset($_POST['numberinput'])) {
            $numbers = $_POST['numberinput'];       
}
$con->close();
?>
<div id="udlodning-wrapper">
    <form name="login-form" class="login-form" method="post">
        <div>
            <input name="numberinput" type="number" id="numberinput"  placeholder="Lotterinummer" />
        </div>
        <div>
            <input type="submit" name="submit" value="Udlodning" id="udlodning-submit" class="button-input"/><br/>
        </div>
    </form>
</div>

使用self-join查找id等于或小于当前人员的人数总和

select
  p1.id,
  p1.name, 
  p1.number, 
  sum(p2.number) as sum
from people p1
join people p2 on p2.id <= p1.id
group by p1.id, p1.name, p1.number;

上面的SQL会产生这样的结果:

id  name    number  sum
1   jack    4       4
2   katrina 2       6
3   clyde   8       14

然后,您可以迭代结果,根据总和检查您的输入