我在 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!";
你的日期倒退了。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
这将是要运行的 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 - 这样它就不会继续更新已更新表的该字段。
您必须定期运行查询以相应地设置状态。您可以每天在某个时间运行一个脚本,该脚本将对数据库运行查询。如果您有 Linux 服务器,请查看 cron 作业,因为这就是您要寻找的。