2013-04-25 77 views
4

我有一个自定义分类网站,在mySQL中我有date_created和date_expire。我想制作一个脚本,在广告过期时删除这些广告。 MySQL表被称为“广告”,有这些列: “ID” “名” “电子邮件” “AD_HEADLINE” “DATE_CREATED” “data_expirare”(这是当广告将过期的日期)PHP/MYSQL过期时删除数据

这里是我试过:http://pastebin.com/gD56BAWY

+0

'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

+0

MySQL中的默认时间格式为YYYY-MM-DD HH:ii:ss。所以(SELECT * FROM ads where'“.date(”Ymd“,$ today)。”'<= data_expirare),如果你想要自动执行此操作的东西,你需要创建一个计划任务(cron) – 2013-04-25 13:43:44

回答

4
delete from ads where data_expirare < NOW(); 

当你需要执行它。

+1

使用>? – 2013-04-25 13:44:45

+0

我的错。编辑。 – 2013-04-25 13:45:34

+2

+1与您的编辑就像有人抬头,您的查询无效。 MySQL的'DELETE'不包含*。 – 2013-04-25 13:51:05

5

你想要做的是每天大约运行一个cron作业(0 0 * * *)。你会在这种情况下创建一个PHP文件,然后在其中,运行以下查询:

DELETE FROM ads WHERE data_expirare < NOW(); 
+0

downvote的原因是什么? – 2013-04-25 13:47:38

-5

,你可以使用cron做

delete * from ads where data_expirare > NOW(); 

每天例子。

+3

同样,为什么要使用NOW()? – 2013-04-25 13:47:15

+3

就像你站起来一样,你的查询是无效的。 MySQL的'DELETE'不包含*。 – 2013-04-25 13:51:25