2

我在 mysql 表中有一个 postdate 和 status 列。当前帖子的状态为 = 1。我只想在帖子提交 15 天后更改状态 = 0。任何人都可以提供帮助。

$todays = date('d-m-Y');
echo $todays;

mysql_query("UPDATE property SET status=1 WHERE expiredate > '".$todays."'");
//echo "record updated!";
4

3 回答 3

4

你的日期倒退了。MySQL日期格式是YYYY-MM-DD

$todays = date('d-m-Y');

应该

$todays = date('Y-m-d');

另外一个更好的方法是使用纯 SQL:

UPDATE property SET status=0 WHERE expiredate < CURRENT_DATE - INTERVAL 15 DAY
于 2013-02-01T14:36:01.080 回答
3

这将是要运行的 cron 脚本和 MySQL 语句的组合。

首先,cron 条目可能每天运行一次(此示例是每天凌晨 1 点运行一次)

* * * 1 0 /path/to/script.php

然后,您的 PHP 脚本将创建一个 MySQL 查询(不需要 PHP 变量) - 使用您的表的假定名称“属性”

$db = new mysqli('host', 'user', 'password', 'database');
$db->query('update property set status=0 where status=1
            and expiredate < date_sub(now(), interval 15 day');

这将自动采用当前的过期日期,减去 15 天并使用它进行计算。此外,它会检查以确保状态为 1 - 这样它就不会继续更新已更新表的该字段。

于 2013-02-01T14:52:32.487 回答
2

您必须定期运行查询以相应地设置状态。您可以每天在某个时间运行一个脚本,该脚本将对数据库运行查询。如果您有 Linux 服务器,请查看 cron 作业,因为这就是您要寻找的。

于 2013-02-01T14:38:29.233 回答