我有一个自定义分类网站,在mySQL中我有date_created和date_expire。我想制作一个脚本,在广告过期时删除这些广告。 MySQL表被称为“广告”,有这些列: “ID” “名” “电子邮件” “AD_HEADLINE” “DATE_CREATED” “data_expirare”(这是当广告将过期的日期)PHP/MYSQL过期时删除数据
这里是我试过:http://pastebin.com/gD56BAWY
我有一个自定义分类网站,在mySQL中我有date_created和date_expire。我想制作一个脚本,在广告过期时删除这些广告。 MySQL表被称为“广告”,有这些列: “ID” “名” “电子邮件” “AD_HEADLINE” “DATE_CREATED” “data_expirare”(这是当广告将过期的日期)PHP/MYSQL过期时删除数据
这里是我试过:http://pastebin.com/gD56BAWY
delete from ads where data_expirare < NOW();
当你需要执行它。
使用>? – 2013-04-25 13:44:45
我的错。编辑。 – 2013-04-25 13:45:34
+1与您的编辑就像有人抬头,您的查询无效。 MySQL的'DELETE'不包含*。 –
2013-04-25 13:51:05
你想要做的是每天大约运行一个cron作业(0 0 * * *
)。你会在这种情况下创建一个PHP文件,然后在其中,运行以下查询:
DELETE FROM ads WHERE data_expirare < NOW();
downvote的原因是什么? – 2013-04-25 13:47:38
,你可以使用cron做
delete * from ads where data_expirare > NOW();
每天例子。
同样,为什么要使用NOW()? – 2013-04-25 13:47:15
就像你站起来一样,你的查询是无效的。 MySQL的'DELETE'不包含*。 – 2013-04-25 13:51:25
看起来像这样应该是自动的。看看MySQL Event系统上的这篇文章,并用它来删除过期的数据: http://mrjoelkemp.com/2011/04/mysql-event-to-remove-expired-data/ 基本上,您可以从以前的建议中采用最好的DELETE脚本,并定期执行它。在他的例子中,它每分钟运行一次,但你可以将它设置为更零星的。
下面是相关链接的文档: http://dev.mysql.com/doc/refman/5.1/en/events.html
'SELECT * FROM广告,其中> = data_expirare' - 这是(尝试) ' “.date( ”DMY“,今天$)”。'选择今天* *期满后的所有广告(即它们已经过期)。你可能想使用'<='。而且,对于MySQL日期,'d-m-Y'不是有效的[literal格式](http://dev.mysql.com/doc/en/date-and-time-literals.html);你将日期存储为[时间数据类型](http://dev.mysql.com/doc/en/date-and-time-types.html),还是字符串? – eggyal 2013-04-25 13:40:34
MySQL中的默认时间格式为YYYY-MM-DD HH:ii:ss。所以(SELECT * FROM ads where'“.date(”Ymd“,$ today)。”'<= data_expirare),如果你想要自动执行此操作的东西,你需要创建一个计划任务(cron) – 2013-04-25 13:43:44