Update Database Field Error CodeIgniter

Charmie picture Charmie · Jul 1, 2012 · Viewed 8k times · Source

I am getting the following error message in CodeIgniter 2.1:

A PHP Error was encountered

Severity: Notice

Message: Array to string conversion

Filename: database/DB_active_rec.php

Line Number: 1407

I'm trying to update fields in my database. I have this code and every tutorial are just the same for batch upload. It works anyway but the thing is it display such an error.

this what i have in my model:

function update2($data){
   $this->db->update_batch('users',$data, "id");
}

This what i have in my controller:

public function updateValues(){
    $this->load->model('get_db');
    $newRow = array(
        array(
            'id' => '3',
            'firstname' => 'Rapphie'
        ),
        array(
            'id' => '2',
            'firstname' => 'Charmie'
        )
    );
    $this->get_db->update2($newRow);
    echo "it has been updated";
}

Answer

Amir Syafrudin picture Amir Syafrudin · Oct 16, 2012

Just stumbled upon the exact same problem here. Fortunately, I'm using the same CI version. :)

It's true that the answer from M_A_K helps remove the "Notice", but I don't think that is the right solution for the problem. So I decided to take a look at line 1407 in DB_active_rec.php and I believe that this is nothing but a minor bug in CI 2.1.2.

Here's my fix. I simply changed the original code:

$not[] = $k.'-'.$v;

into this:

$not[] = $k2.'-'.$v2;

Voila! The "Notice" doesn't appear anymore. :)

We can clearly see that line 1407 was not meant to use $k and $v because line 1407 is inside a foreach loop iterating through $v as $k2 and $v2.

I hope I'm making myself clear.