【问题标题】:DELETE row FROM MYTABLE in 1 week from today从今天起的 1 周内从 MYTABLE 中删除行
【发布时间】:2012-09-20 14:32:49
【问题描述】:

我尝试在 1 周内删除我的 DDB 中的一行。

我写道:

<?php
//in my page
//On click
$today=date("Ymd");
$query = 'INSERT INTO mytable VALUES (id,val,date),("", "'.$val.'", "'.$today'")';
dbb_exe($query);
?>

<?php
//in my header
//Check my table
$today=date("Ymd");

$query = 'SELECT date FROM mytable WHERE id=.'(int)$_GET['id'];
$r_date = dbb_exe($query);

//Here it's where i want delete my row if the row exists since 1 week

if($r_date==($today - "1week")){
//DELETE row
$query = 'DELETE FROM mytable WHERE id=.'(int)$_GET['id];
dbb_exe($query);
}


?>

如你所见,我不知道如何计算 var "1week",

现在我正在阅读 strtotime 以尝试类似 $date= strtotime($today); 但是我迷路了,无论如何我一整天(+晚上)都可以成功

Red Bull 和 stackoverflow 是我的朋友。

感谢社区

祝你有美好的一天

梅尔

【问题讨论】:

  • 看看所有mysql date functions
  • 重要提示:我知道的几乎每个星期都有 7 天。
  • 对周计算没有帮助,但是您在两个地方有 WHERE id=.'(int)$_GET['id'];,我认为您应该将它们都更改为 WHERE id='.(int)$_GET['id'];('.' 在错误的一侧引号)

标签: php mysql date strtotime


【解决方案1】:

我相信您可以尝试以下方法,而不是使用 php 完成所有工作:

DELETE FROM mytable WHERE date = DATE_SUB(CURDATE(), INTERVAL 7 DAY)

这应该从mytable 删除所有记录,date 等于 1 周前。

如果您想删除超过 1 周的所有记录,请将 = 替换为 &lt;

【讨论】:

  • id=.'(int)$_GET['id];没有检查
  • 对,我的错。请尝试 DELETE FROM mytable WHERE date = DATE_SUB(CURDATE(), INTERVAL 7 DAY) and id = $id
【解决方案2】:

if($r_date==($today - "1week")){ 更改为 if($r_date ==(date('Ymd', strtotime(date('Ymd') . " -7days"))) {

【讨论】:

    【解决方案3】:

    使用:if($today - $r_date >= 7)

    【讨论】:

      【解决方案4】:

      如果您在 mysql 中将 DATES 存储为 DATE 数据类型,请执行以下操作:

      DELETE FROM table WHERE date_column = DATE_ADD(CURRENT_DATE(), INTERVAL 7 DAY) 
      

      您没有提供太多细节,所以在上面的答案中我假设它已经存储为date,当前日期将由MySQL 自动获取,但是,您想在任何特定日期添加 7 天将CURRENT_DATE()更改为所需日期,格式如2012-09-20

      【讨论】:

        猜你喜欢
        • 2020-06-30
        • 1970-01-01
        • 2022-07-06
        • 2021-08-24
        • 2020-04-16
        • 1970-01-01
        • 1970-01-01
        • 2016-09-11
        • 1970-01-01
        相关资源
        最近更新 更多