我需要清理一个SQL表并清除比现在更早的所有条目,*和*将即将到来的条目“向上移动”..最好的方法?

时间:2013-01-07 16:34:22

标签: php mysql codeigniter

我有一个SQL表,用户列出了接下来的三个即将到来的艺术展。

我正在整理一个cron作业维护脚本,我希望它能够删除已经发生过的节目。但是后来我也想“将其他人移动一个”..所以show1被删除了,但是show2变成了show1,show3变成了show2,而show3现在是空的。

这是解决此问题的最佳方法吗? (使用Codeigniter BTW)请注意,对于每个节目,实际上还有其他信息(show1title,show1desc等),我必须移动..但为了清晰起见,我在这里减少了它。

$_sql = "SELECT users.id FROM users WHERE users.show1date < CURDATE() AND users.show1date != 0000-00-00";
$_query = $this->db->query( $_sql );
if ($_query->numRows() > 0){
    foreach ($_query as $_row) {
        $_id = $row->id;
        $_show2date = $_row->show2date;
        $_show3date = $_row->show3date;
        $_sql = "UPDATE users SET users.show1date = ?, users.show2date = ?, users.show3date ='' WHERE users.id = ?";
        $_query = $this->db->query( $_sql, array($show2date, $show3date, $_id) );
    }
}

这将“移动所有节目”并将show3留空。这是一个很好的方法吗?似乎可能有更好的方法?

现在我正在考虑..也许是一个单独的表,用于显示user.id作为外键?

0 个答案:

没有答案