繁体   English   中英

SQL / PHP:选择查询更新结果

[英]SQL/PHP: Update result from select query

我一直在努力使它永远工作,但似乎无法使其正常工作。 如果下周旅行时,tours_reservations表中的预订少于8个,则需要更新我的Tours表中的一列。 我有一条选择语句,该语句可以为我提供所需的结果(需要更新的游览),但我不知道如何在更新语句中处理此结果。 这是我的选择语句:

$date = new DateTime("+ $starting days");
    $day = $date->format('Y-m-d');

    $this->db->query("SELECT t.t_id, t.name, t.status, COUNT( r.reservation_id ) AS c
                      FROM tours t
                      JOIN tours_reservations r ON t.t_id = r.tour_id
                      WHERE DAY =  '$day'
                      GROUP BY t.t_id
                      HAVING COUNT( c ) <=8");

有了这个,我得到了从7天开始的所有具有8个或更少保留的事件。 游览表具有一个状态字段,该字段将更新为“已取消”。 如何在更新查询中处理此问题? 任何帮助将不胜感激。

提前致谢。

假设您的初始查询是正确的。

$query = $this->db->query("SELECT t.t_id, t.name, t.status, COUNT( r.reservation_id ) AS c
                      FROM tours t
                      JOIN tours_reservations r ON t.t_id = r.tour_id
                      WHERE DAY =  ?
                      GROUP BY t.t_id
                      HAVING COUNT( c ) <=8", array($day));

foreach ($query->result() as $row)
{
   $this->db->query("UPDATE tours SET status = 'cancelled' WHERE t_id = ? ", array($row->t_id));
}

还添加了参数绑定。

编辑:有更好的方法可以做到这一点,而无需循环执行更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM