Обновить поле поля базы данных 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";
}
Ответы
Ответ 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
нигде не используется.