我在CodeIgniter模型中有功能,我想简单地将'active_date'记录值放入/'复制'event_date'(在与查询匹配的同一行中)。我试过给'event_date'一个直值,这是有效的。我只是不知道用查询结果这样做。谢谢!
public function postx_model()
{
$data = array(
'last_status' => $this->input->post('status'),
);
if( $this->input->post('status') == 'Active' )
{
$this->db->select('active_date');
$this->db->where('customer_code', $this->input->post('customer_code') );
$query = $this->db->get('customer_table');
$data2 = array(
'event_date' => $query,
//'event_date' => '2013-09-14', //this is work
);
$dataComplete = $data + $data2;
$this->db->where('customer_code', $this->input->post('customer_code') );
$this->db->update('customer_table', $dataComplete);
}
else
{
$this->db->where('customer_code', $this->input->post('customer_code') );
$this->db->update('customer_table', $data);
}
}
答案 0 :(得分:1)
您需要获取查询结果并操作结果 见下面的注释行......
public function postx_model()
{
$data = array(
'last_status' => $this->input->post('status'),
);
if( $this->input->post('status') == 'Active' )
{
$this->db->select('active_date');
$this->db->where('customer_code', $this->input->post('customer_code') );
$query = $this->db->get('customer_table');
// getting result of query
$result=$query->result();
//creating data array based on result data
$data2 = array(
'event_date' => $result->active_date,
//'event_date' => '2013-09-14', //this is work
);
$dataComplete = $data + $data2;
$this->db->where('customer_code', $this->input->post('customer_code') );
$this->db->update('customer_table', $dataComplete);
}
else
{
$this->db->where('customer_code', $this->input->post('customer_code') );
$this->db->update('customer_table', $data);
}
}
答案 1 :(得分:0)
这样的事情:
$query = $this->db->select('active_date')
->from('customer_table')
->where('customer_code', $this->input->post('customer_code'))
->get()->row_array();
$data2 = array('event_date' => $query['active_date']);
答案 2 :(得分:0)
您的代码应该是这样的: -
public function postx_model()
{
$data = array('last_status' => $this->input->post('status'));
if( $this->input->post('status') == 'Active' )
{
$this->db->select('active_date');
$this->db->where('customer_code', $this->input->post('customer_code') );
$query = $this->db->get('customer_table');
$result=$query->result_array();
$data2 = array('event_date' => $result['active_date']);
$dataComplete = $data + $data2;
$this->db->where('customer_code', $this->input->post('customer_code') );
$this->db->update('customer_table', $dataComplete);
}
else
{
$this->db->where('customer_code', $this->input->post('customer_code') );
$this->db->update('customer_table', $data);
}
}
答案 3 :(得分:0)
观察:你注意到这条线一直反复重复
$this->input->post('customer_code') ;
建议:永远不要在数据库插入或更新中使用$ this-> input-> post或类似的东西。只需传入已经过滤,清理,验证并准备就绪的变量或数组。
// adding TRUE enables xss clean
$customerCode = this->input->post('customer_code', TRUE) ;
现在您可以将$ customerCode用于任何方法 - 它将更清晰,更易于阅读 - 如果表单名称发生更改 - 您只需将其更改为一个位置即可。为了奖金,我们添加了xss清洁。如果你需要在一个以上的方法中使用它:
$this->customerCode = this->input->post('customer_code', TRUE) ;
现在$ this-> customerCode将可用于该类中的任何方法。
===== 编辑 “班级中的任何方法都可以使用它的含义是什么?” 好吧 - 这是$ this->真的很酷的事情。 通常在方法(函数)中设置变量时:$ myvariable,您只能在方法中使用它。当你使用$ this-> myvariable时,它可立即用于课堂上的任何方法。
这很酷但是SUPER COOL是你可以在模型构造函数中设置$ this->变量 - 例如数据库表的名称,字段等,如$ this-> dbtable ='acme_users “; $ this-> dbfields ='id,first,last,email';
然后您可以在方法中使用泛型代码,例如$ this-> dbtable,$ this-> dbfields。另一个优点是你可以在构造函数中高举特定的模型知识 - 然后在你编写的方法代码中更加抽象。这使得重用/扩展更容易。