我有一个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作为外键?