【问题标题】:php update status of post after 15 days of submissionphp在提交15天后更新帖子状态
【发布时间】:2013-01-16 21:37:43
【问题描述】:

我在 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!";

【问题讨论】:

标签: php mysql sql database date


【解决方案1】:

您的日期倒退了。 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

【讨论】:

  • 约翰我已将结构更改为 Y-m-d 并将两个虚拟记录放入数据库中。并尝试了 sql 查询,但它没有修改任何内容。
  • 您使用了哪个查询?矿?还是你的?
  • $todays = date('Y-m-d'); mysql_query("更新属性集状态=0 where expiredate
  • 再问一个问题。我应该多久在我的网站上运行一次该查询,在那里我会收到帖子并自动更新。在数据库连接文件或索引中?需要您的建议:)
【解决方案2】:

这将是要运行的 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 - 这样它就不会继续为已更新的表更新该字段。

【讨论】:

  • 其实不需要where子句中的status = 1。 Mysql 将只更新具有status &lt;&gt; 0 的行。 Mysql 是个很聪明的女孩 ;)
【解决方案3】:

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

【讨论】:

  • 实际上我正在获取发布日期并将状态设置为 1。15 天后我想将状态更改为 0。没有物理删除记录只是更改其状态
猜你喜欢
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 2021-02-05
  • 2020-07-04
  • 2018-04-29
  • 2022-08-18
  • 2019-08-08
  • 2020-02-12
相关资源
最近更新 更多