我正在开发一个webapp,其中分配了一个用户订阅任务,并检查订阅是否过期。我做这个是php。我只想知道怎么做。请帮忙
e3bfsja21#
这里有一个简单的方法。我将与大家分享我的一段代码片段。您可以这样尝试。在数据库中设置一个有效的\upto字段。因此,当用户购买订阅时,将valid update的值存储到该字段中。下面是一个示例代码段。
public function vendorcheckout($data) { $stmt = $this->con->prepare("INSERT INTO x3mdu_vendor_subscription(sub_id,vendor_id,sub_title,sub_amount,sub_duration,vendor_name,vendor_email,vendor_phone,vendor_address1,vendor_address2,vendor_city,vendor_state,payment_id,valid_upto,created) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,now())"); $stmt->bind_param("iisisssissiiss", $data['sub_id'],$data['vendor_id'],$data['sub_title'],$data['sub_amount'],$data['sub_duration'],$data['vendor_name'],$data['vendor_email'],$data['vendor_phone'],$data['vendor_address1'],$data['vendor_address2'],$data['vendor_city'],$data['vendor_state'],$data['payment_id'],$data['valid_upto']); $result = $stmt->execute(); $stmt->store_result(); $num_rows = $stmt->num_rows; $stmt->close(); $last_id = $this->con->insert_id; if($result){ return $last_id; } return false; }
要检查订阅是否仍处于活动状态,可以这样做。
private function isSubscribed($vendor_id) { $stmt = $this->con->prepare("SELECT vs_id from x3mdu_vendor_subscription WHERE vendor_id = ? AND DATEDIFF(CURDATE(),valid_upto) < 0"); $stmt->bind_param("i",$vendor_id); $stmt->execute(); $stmt->store_result(); $num_rows = $stmt->num_rows; $stmt->close(); return $num_rows > 0; }
这个 DATEDIFF(CURDATE(),valid_upto) 将返回一个负值,直到到达有效的截止日期。当差值大于 0 这意味着您的订阅已过期。希望有帮助
DATEDIFF(CURDATE(),valid_upto)
0
1条答案
按热度按时间e3bfsja21#
这里有一个简单的方法。我将与大家分享我的一段代码片段。您可以这样尝试。在数据库中设置一个有效的\upto字段。因此,当用户购买订阅时,将valid update的值存储到该字段中。下面是一个示例代码段。
要检查订阅是否仍处于活动状态,可以这样做。
这个
DATEDIFF(CURDATE(),valid_upto)
将返回一个负值,直到到达有效的截止日期。当差值大于0
这意味着您的订阅已过期。希望有帮助