如何在不更改 php 中旧日期值的情况下更新日期?

Posted

技术标签:

【中文标题】如何在不更改 php 中旧日期值的情况下更新日期?【英文标题】:How do I update date without changing the older date value in php? 【发布时间】:2020-10-24 15:50:20 【问题描述】:

我正在创建一个提款功能,用户只能批量提款。如果他们在同一天进行交易。他们只能在后天撤回。这意味着他们不能在进行交易的同一天取款。但是当用户想要提取他们的钱时我遇到了一个问题。旧的 date_claim 也发生了变化。

---------------------
|id   |transac_date | total | status  | date_claim |
--------------------------------------------------
|abc1 | 2020-10-07  | 98   | claimed  | 2020-10-10 |
|abc1 | 2020-10-22  | 124  |unclaimed | null       |
|abc1 | 2020-10-24  | 145  |unclaimed | null       |

在这种情况下,用户正在尝试声明transaction date on 2020-10-22


if(isset($_POST['withdraw']))

   $id= $_GET['id'];
   $sql="UPDATE tbl_kqd SET status ='claimed', date_claim = CURRENT_DATE()
        WHERE id = '$id' AND 
        DATE(transac_date) !=CURRENT_DATE() ";
   $sql_claim = mysqli_query($link, $sql);
   
   if (mysqli_affected_rows($link) > 0)
    echo "<script>alert('Successfully Claimed!')</script>";
    echo "<script>window.location = 'claim.php'</script>";  
   
  else
    echo "<script>alert('Please try tomorrow!')</script>";



//the output


---------------------
|id   |transac_date | total | status  | date_claim |
--------------------------------------------------
|abc1 | 2020-10-07  | 98   | claimed  | 2020-10-24 |
|abc1 | 2020-10-22  | 124  | claimed  | 2020-10-24 |
|abc1 | 2020-10-24  | 145  |unclaimed | null       |

查询也改变了旧日期。我不希望它更改已声明的日期。我该如何解决这个问题?

在数据库中我声明date_claim as date

【问题讨论】:

【参考方案1】:

我了解到您想要更新给定 id 的第一个“无人认领”行,并且其 transac_date 与今天不同。这是一种表达方式:

update tbl_kqd 
set status ='claimed', date_claim = current_date()
where id = ? and transac_date <> current_date and status = 'unclaimed'
order by transac_date 
limit 1

MySQL 在update 语句中支持order by

【讨论】:

【参考方案2】:

这是因为您的 ID 在 3 行上是相同的!!为每一行创建一个唯一的 id 将修复它。

---------------------
|id   |transac_date | total | status  | date_claim |
--------------------------------------------------
|abc1 | 2020-10-07  | 98   | claimed  | 2020-10-24 |
|abc2 | 2020-10-22  | 124  | claimed  | 2020-10-24 |
|abc3 | 2020-10-24  | 145  |unclaimed | null       |

【讨论】:

感谢您的解决方案,但就像我在上面所说的 I'm creating a withdraw function where user can only withdraw their money in bulk. 意味着他们必须使用相同的 id 但不同的事务。我正在批量创建更新撤回,这意味着。如果状态为unclaimed,他们可以使用相同的 ID 声明它。更改 id 肯定会改变函数的用途。 我完全理解您的解决方案,谢谢。我知道有交易 id,但交易 id 不起作用。因为每个 id 都是不同的,我必须一一更新行。而不是批量更新。 如果你有相同的 id 所以你应该做一个外键,而不是那样存储它们!

以上是关于如何在不更改 php 中旧日期值的情况下更新日期?的主要内容,如果未能解决你的问题,请参考以下文章