PHP/MySQL 更新查询每 2 列自动更新房间更改

标签 php mysql

我想创建自动房间划分。

假设:

  • 我有 4 条数据。
  • 每个房间最多容纳 2 人。

如果房间已满/达到最大“2”,第 3 个人会自动插入到下一个房间。

这是我的代码。假设4数据。

$kuota=2; //Max 2 data in 1 room

while ($row = mysqli_fetch_array($query)) {
$id = $row["id"];
$x=1;
while($x<=$kuota) {
    $sql2 = "UPDATE cds SET room=$y WHERE id='$id'";
    $query2 = mysqli_query($con, $sql2) or die (mysqli_error($con));
    $x++;
}
$y++

}

但它不起作用。

我的代码太丑了:(

我想要得到这样的结果

name     ||  Room
Michael  ||   1
Muller   ||   1
...
Cyntia   ||   2
Gina     ||   2

最佳答案

while ($row = mysqli_fetch_assoc($query)) {
    $id = $row['id'];
    $sql2 = "UPDATE cds AS c1
             CROSS JOIN (SELECT room
                         FROM cds
                         GROUP BY room
                         HAVING COUNT(*) < $kuota
                         ORDER BY room
                         LIMIT 1) AS c2
             SET c1.room = c2.room
             WHERE id = $id";
    mysqli_query($con, $sql2) or die (mysqli_error($con));
}

c2 子查询返回分配给它的人数少于 $kuota 人的第一个房间。

关于PHP/MySQL 更新查询每 2 列自动更新房间更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24480680/

相关文章:

php - 当连接在没有提交或回滚的情况下关闭时,mysqli 事务会发生什么?

mysql - 从 M 组中选择前 N 行

javascript - 下拉列表中填充了数据库数据,并在按钮单击时添加

javascript - 添加在 Highcharts 中逐点不同的自定义文本工具提示

php - Bootstrap 表仅在 <td> 中显示一行

mysql - 如何回滚 MySQL 事务中的所有语句?

php - 用于防止使用相同标签重新标记相同照片/项目的 SQL

php - 无法在 CodeIgniter 4 中发送服务器电子邮件

mysql - 使用 LOAD DATA LOCAL INFILE 在导入期间将字符串添加到字段

python - Django 模型尝试自动创建主键字段,即使它已经指定