php在提交15天后更新帖子状态

php在提交15天后更新帖子状态,php,mysql,sql,database,date,Php,Mysql,Sql,Database,Date,我在mysql表中有一个postdate和status列。当前职位状态为=1。所有我想改变的状态=0后15天提交的职位。 有人来帮忙吗 $todays = date('d-m-Y'); echo $todays; mysql_query("UPDATE property SET status=1 WHERE expiredate > '".$todays."'"); //echo "record updated!"; 你的约会倒了。MySQL日期格式为YYYY-MM-DD $today

我在mysql表中有一个postdate和status列。当前职位状态为=1。所有我想改变的状态=0后15天提交的职位。 有人来帮忙吗

$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
更新属性集状态=0,其中expiredate<当前日期-间隔15天

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

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

首先,cron条目可能每天运行一次(本例为每天1点运行一次)

然后,您的PHP脚本将使用表“property”的假定名称创建一个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');
$db=newmysqli('host','user','password','database');
$db->query('更新属性集状态=0,其中状态=1
过期日期

这将自动获取当前过期日期,减去15天,并将其用于计算。此外,它会检查以确保状态为1-以便不会为已更新的表不断更新该字段。

警告您的代码容易受到sql注入攻击!使用cron作业来执行此操作。.它们不是更长时间的维护。请参阅?了解改为使用或-将帮助您决定使用哪一种。如果您选择PDO,.@DanielA.White只是想知道,您说它容易受到sql注入的攻击,即使值是由服务器使用日期函数生成的?这是一种错误的做法,因为mysql_*在PHP 5.5.0中不推荐使用。不是因为sql i在这种特殊情况下,我得到了发布日期并将状态设置为1。15天后,我想将状态更改为0。没有物理删除记录,只是更改其状态。John我已将结构更改为Y-m-d,并在数据库中放置了两个虚拟记录。我尝试了sql查询,但它没有修改任何内容。您选择了哪个查询你使用?我的?还是你的?$todays=date('Y-m-d');mysql_查询(“update property set status=0,其中expiredate<'“$todays.”);解决了我猜还有一个问题。我应该多长时间在我收到帖子的网站上运行该查询并自动更新。在数据库连接文件或索引中?需要您的建议:)实际上where子句中的
status=1
。Mysql将只更新状态为0的行。Mysql是一个非常聪明的女孩;)
$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');