В 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"; }
попробуйте эту надежду на его работу
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"); } }
Просто наткнулся на ту же самую проблему. К счастью, я использую ту же версию CI. 🙂
Это правда, что ответ от M_A_K помогает удалить «Уведомление», но я не думаю, что это правильное решение проблемы. Поэтому я решил взглянуть на строку 1407 в DB_active_rec.php, и я считаю, что это не что иное, как незначительная ошибка в CI 2.1.2.
Вот мое исправление. Я просто изменил исходный код:
$not[] = $k.'-'.$v;
в это:
$not[] = $k2.'-'.$v2;
Вуаля! «Уведомление» больше не появляется. 🙂
Мы можем ясно видеть, что строка 1407 не предназначена для использования $ k и $ v, потому что строка 1407 находится внутри цикла foreach, итерации через $ v в виде $ k2 и $ v2.
Надеюсь, я проясню ситуацию.
Просто понял, что использование foreach, такого как M_A_K, на самом деле превосходит цель использования функции update_batch. Это связано с тем, что, используя foreach, мы фактически делаем одно обновление (а не пакетное) для каждого элемента массива. Это ничем не отличается от использования (одного) обновления в CodeIgniter.
Я всегда чувствую себя немного грязным для этого, но вы всегда можете просто подавлять ошибки для этой одной строки кода!
function update2($data){ @$this->db->update_batch('users',$data, "id"); }
Разумеется, правильная вещь – обновить до 2.1.3 (не тестировалось или выглядело так, я предполагаю, что оно исправлено).
Правильным решением является удаление строк 1401-1404 из DB_active_rec.php, поскольку $not
variable нигде не используется.