如何在不更改 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 中旧日期值的情况下更新日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不更改现有组件文件的情况下通过插件将日期类型更改为下拉列表

在不更改对象结构的情况下格式化嵌套日期

如何在 c# blazor 网页中更新实时日期时间

如何实现word中的表格内连续不断日期更新?

如何在不考虑时间的情况下按日期时间列分组

如何在不拖入谷歌表格的情况下自动填充日期列?