【问题标题】:Deleting and replacing a record from mysql after a certain date在某个日期之后从mysql中删除和替换记录
【发布时间】:2015-03-12 22:31:16
【问题描述】:

我目前正在实施一个网站,管理员用户可以在该网站上发布可供用户查看的优惠。优惠有一个有效期,管理员用户可以选择。我可以在数据库中插入报价详情。但是,我只想从数据库中检索一个报价,该报价仅在到期日之前显示。在到期日期之后,它应该从数据库中删除该报价并将其替换为数据库中的下一个报价。

我有一个名为 offer 的表,其中包含以下字段(offerid、offertitle、details、expirydate

addoffer.php

 $title =  $_POST['offertitle'];
 $details = $_POST['details'];
 $enddate = date('Y-m-d', strtotime($_POST['date']));

 $sqlquery = "INSERT  INTO `offers` (`offerid`, `offertitle`, `details`, `expirydate`) 
VALUES ( NULL, '$title', '$details', '$date')";
  if($mysqli->query($sqlquery)){
      echo '<h3>Offer posted</h3>';
  }else { 
      echo 'error';
  }

查看 offer.php

$mysqlquery = "SELECT * FROM offers";
$results = $mysqli->query($mysqlquery);

if ($results->num_rows > 0) {
   while ($row = $results->fetch_assoc()){
      echo "". $row["offertitle"]. ""; 
   }
}

这样做的任何方式,网页只显示一个报价,直到其到期,然后用数据库中的下一个替换它??

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    修改代码如下。它将显示除过期的所有offer。

    $current_date = date('Y-m-d');
    $mysqlquery = "SELECT * FROM offers where expirydate<$current_date ";
    $results = $mysqli->query($mysqlquery);
    
    if ($results->num_rows > 0) {
       while ($row = $results->fetch_assoc()){
          echo "". $row["offertitle"]. ""; 
       }
    }
    

    【讨论】:

      【解决方案2】:

      我会为此编写简单的 SQL 查询:

      SELECT * FROM offers WHERE expirydate > NOW() ORDER BY expirydate LIMIT 1
      

      假设您的到期日期字段是 DATE 或 DATETIME 类型,这将起作用。它获取到期日期之前订购的第一个报价,因此即将到期的报价首先出现。

      删除是另一个问题。您不能在单个查询中执行 SELECT 和 DELETE。但是另一个查询将删除过期的优惠:

      DELETE FROM offers WHERE expirydate < NOW()
      

      【讨论】:

      • expirydate 字段是 DATE 类型。这是否能够删除报价并将其替换为表格中的下一个?
      • 是的,您可以在日期字段上使用比较,在这种情况下 expirydate > NOW() 表示将来的任何内容。其他语句 expirydate = CURDATE() ORDER BY expirydate LIMIT 1 这意味着 - 给我一些今天或将来到期的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2020-03-12
      • 2018-12-10
      • 2013-05-09
      • 2013-10-31
      • 1970-01-01
      相关资源
      最近更新 更多