CodeIgniter查询结果为直线阵列

时间:2013-09-04 07:44:50

标签: codeigniter

我在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); 
    }
  }

4 个答案:

答案 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。另一个优点是你可以在构造函数中高举特定的模型知识 - 然后在你编写的方法代码中更加抽象。这使得重用/扩展更容易。