我有一个用户表,我有一个平衡字段!经销商可以通过表格编辑用户,并可以将余额设置为是或否。如果他将余额设置为是,则在30天后我想将仅该用户的余额重置为否。每个用户都由一个名为key的唯一字段映射。因此,一旦余额设置为“是”,触发器应为该特定用户计算30天,并在30天后将其重置为“否”
我正在使用PHP Codeigniter。
答案 0 :(得分:1)
根据我的理解,您需要在更改后的30天内更新数据库中的值。例如,你不想在每个月末这样做。
您可以做的与此类似:MySQL trigger: Update when reaching a certain datetime。
答案 1 :(得分:1)
关于设置cron作业请参阅此页面:http://www.thesitewizard.com/general/set-cron-job.shtml enter link description here
除了您要做的事情之外: 首先,您应该为cron作业创建一个控制器类。这实际上是您网站上的一个页面,当访问该页面时,它会执行您想要的代码。
System.out.println(countOfUniqueChars);
return countOfUniqueChars;
因此,如果您的cron作业设置为每30天访问一次此页面,则可以多次运行该脚本。 关于实际的脚本,这很难回答。但我们会尝试: 您必须拥有一个更新数据库的模型,或多或少是这样的:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class cronjobs extends CI_Controller {
public function __Construct(){
}
public function index(){echo 'Nothing to see here.'}
public function reset_resellers(){
$this->load->model('your_model');
echo $this->your_model->reset_resellers() . "resellers were reset.";
}
}
因此,您必须在update reseller.balance = 'no' where balance = 'yes' and balance_set_date = today - 30 days
表格中添加一栏resellers
,但您可以采用不同的方式调用该列,并假设您以balance_set_date
格式保留该列,而不是date
格式。 1}}格式,让我们尝试创建该模型:
timestamp
最后,如果你想检查你的工作是否符合你的要求,只需访问网址function reset_resellers(){
$this->db->where('balance', 'yes');
$this->db->where('balance_set_date <= CURDATE() - 30', '', false);
$query = $this->db->update('resellers');
return $query->num_rows();
}