Smudger
Smudger

Reputation: 10781

codeigniter update table row with new data array where

I have a database record with a uniqueID/PrimaryKe (OrderNumber)

I want to update the record with new data for that same PrimaryKey, OrderNumber.

My Controller is:

 $data = array(
      'CustomerName' =>  $this->input->post('customer'),
      'CustomerAccountCode' =>  $this->input->post('accountcode'),
      'PeriodStart' =>  substr($this->input->post('period'), 0,10),
      'OrderUnitOfMeasure' =>  $this->input->post('buom'),
      'CreditLimit' =>  $this->input->post('creditlimit'),
      'BalanceBeforeOrder' =>  $this->input->post('currentbalance'),
      'BalanceAfterOrder' =>  $this->input->post('newbalance'),
      'OrderLines' =>  $this->input->post('orderlines'),
      'TotalCost' =>  $this->input->post('grandtotal'),
      'AverageDiscount' =>  $this->input->post('avediscount'),
      'TotalCubes' =>  $this->input->post('grandtotalcubes'),
      'TreatedCubes' =>  $this->input->post('grandtotaltreatedcubes'),
      'SpecialComments' =>  $this->input->post('specialcomments'),
      'CustomerReference' =>  $this->input->post('customerref'),
      'ordernumber' =>  $this->input->post('ordernumber')
      );

    $this->sales_model->update_order_data($data);

My model is:

function update_order_data($q){
    $this->db->where('CustomerOrderID', 'OrderNumber'); //ordernumber being post input ordernumber in array
    $query = $this->db->update('Customer_Order_Summary');
}

So what I want is :

update 'Customer_Order_Summary' 
set 'CustomerName'="$this->input->post('customer')",
set 'CustomerAccountCode'="$this->input->post('accountcode')",
//rest of set statements for each column and corresponding post
where 'CustomerOrderID'='OrderNumberInArray'//(post value)

This update statement is not working, any pointers would be appreciated.

Thanks as always,

Upvotes: 0

Views: 8409

Answers (2)

Bhuvan Rikka
Bhuvan Rikka

Reputation: 2703

Remove 'ordernumber' from your $data array and pass it separately

$this->sales_model->update_order_data($this->input->post('ordernumber'),$data);‌

The query should be like

function update_order_data($key,$q){
 $this->db->where('CustomerOrderID', $key);
 $query = $this->db->update('Customer_Order_Summary',$q);
}

Upvotes: 2

Marko Aleksić
Marko Aleksić

Reputation: 1591

Try:

function update_order_data($q)
{
    $this->db->where('CustomerOrderID', $q['OrderNumber']);
    $this->db->update('Customer_Order_Summary',$q);
    return $this->db->affected_rows();
}

Note: Usually, in update functions, I have 2 arguments eg:

function update_something($pk,$data)
{
   $this->db->where('primary_key', $pk);
   $this->db->update('database_table',$data);
   return $this->db->affected_rows();
}

Upvotes: 2

Related Questions