程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了过期时更新状态大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决过期时更新状态?

开发过程中遇到过期时更新状态的问题如何解决?下面主要结合日常开发的经验,给出你关于过期时更新状态的解决方法建议,希望对你解决过期时更新状态有所启发或帮助;

我正在做一个小型租赁系统,我的 sql 数据库将记录客户租用产品的详细信息和过期日期。如果日期超过逾期日期,“状态”将自动从“当前正在出租”设置为“逾期”。截至目前,这是我能想到的,但当然,我的代码逻辑是错误的。为了更清晰的观察,请参见附图。

php

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "assignment3";



// Create connection
$conn = new MysqLi($servername,$username,$password,$dbName);
// check connection
if ($conn->connect_error) 
{ 
dIE("Connection Failed: " . $conn->connect_error);
}

$retrIEve = MysqLi_query($conn,"SELECT * FROM rentproducts WHERE status = 'Currently RenTing'");
$row = MysqLi_fetch_array($retrIEvE);
$today = new datetiR_7_11845@e(date("d-m-Y"));
$overduedate = new datetiR_7_11845@e($row['overduedate']);
$overduedays = $overduedate->diff($today)->format("%a");
echo $overduedays;

if ($overduedays >= 1) 
{
    $sql = "updatE rentproducts SET status = 'Overdue' WHERE status = 'Currently RenTing'";
    MysqLi_query($conn,$sql);
}
?>

过期时更新状态

解决方法

你的逻辑确实是错误的。无论日期如何,您的 updatE 查询都会将所有记录从“当前正在出租”更改为“过期”。

如果您想在日期大于另一个日期(例如昨天)时在 SQL 中设置一个值,那么您可以使用 SQL 日期函数。使用 NOW() 将为您提供 datetiR_7_11845@e 格式的日期(即 Y-m-d H:i:s)或 CURDATE() 将为您提供日期格式的日期(即 Y-m-d 00:00:00)。然后你可以增加或减少一个间隔。

@H_930_7@mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_StriCT);
$mysqli = new mysqli('localhost','user','password','test');
$mysqli->set_charset('utf8mb4'); // always set the charset

$stmt = $mysqli->prepare("updatE rentproducts 
    SET status = 'Overdue' 
    WHERE status = 'Currently RenTing'
        AND overduedate >= CURDATE() - INTERVAL 1 DAY");
$stmt->execute();

您甚至可以在 MySQL 中设置一个事件来每天执行此查询。

然而,这不是一个好的数据库设计。您正在存储非规范化数据。然有时它可能有意义,但我认为在这种情况下,您应该保留列 status 原样,或者甚至完全删除它,因为它不提供额外信息。让您的应用程序在从数据库读取数据时处理状态。

例如:

$stmt = $mysqli->prepare("SELECT * 
    FROM rentproducts 
    WHERE status = 'Currently RenTing'
        AND overduedate >= CURDATE() - INTERVAL 1 DAY");
$stmt->execute();
$overdueRentals = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);

大佬总结

以上是大佬教程为你收集整理的过期时更新状态全部内容,希望文章能够帮你解决过期时更新状态所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: