Подтвердить что ты не робот

Обновить поле поля базы данных CodeIgniter

В CodeIgniter 2.1 появляется следующее сообщение об ошибке:

A PHP Error was encountered

Severity: Notice

Message: Array to string conversion

Filename: database/DB_active_rec.php

Line Number: 1407

Я пытаюсь обновить поля в моей базе данных. У меня есть этот код, и каждый учебник одинаковый для пакетной загрузки. Он работает в любом случае, но дело в том, что оно отображает такую ​​ошибку.

это то, что у меня есть в моей модели:

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

Это то, что у меня есть в контроллере:

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";
}
4b9b3361

Ответ 1

попробуйте эту надежду на свою работу

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

или

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

Ответ 2

Просто наткнулся на ту же самую проблему. К счастью, я использую ту же версию CI.:)

Верно, что ответ от M_A_K помогает удалить "Уведомление", но я не думаю, что это правильное решение проблемы. Поэтому я решил взглянуть на строку 1407 в DB_active_rec.php, и я считаю, что это не что иное, как незначительная ошибка в CI 2.1.2.

Здесь мое исправление. Я просто изменил исходный код:

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

в это:

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

Voila! "Уведомление" больше не появляется.:)

Мы можем ясно видеть, что строка 1407 не предназначена для использования $k и $v, потому что строка 1407 находится внутри цикла foreach, итерации через $v в виде $k2 и $v2.

Надеюсь, я проясню.

Ответ 3

Только что понял, что использующий foreach, например M_A_K, фактически использует цель использования функции update_batch. Это связано с тем, что, используя foreach, мы фактически делаем одно обновление (а не пакетное) для каждого элемента массива. Это ничем не отличается от использования (одного) обновления в CodeIgniter.

Ответ 4

Я всегда чувствую себя немного грязным для этого, но вы всегда можете просто подавлять ошибки для этой одной строки кода!

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

Конечно, правильная вещь - обновить до 2.1.3 (не тестировалось или выглядело так, я полагаю, что это исправлено.)

Ответ 5

Правильное решение - удалить строки 1401-1404 из DB_active_rec.php, поскольку переменная $not нигде не используется.