我有一个 SQL 表,用户在其中列出了他们接下来即将举行的三场艺术展。
我正在整理一个 cron 作业维护脚本,我希望它可以删除已经发生的节目。但后来我也想“将其他人向上移动”.. 这样 show1 被擦除,但 show2 变成 show1, show3 变成 show2, show3 现在是空的。
这是解决这个问题的最佳方法吗?(使用 Codeigniter 顺便说一句)请注意,对于每个节目,实际上还有其他信息(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 作为外键的节目?