Давайте сначала проанализируем сообщение об ошибке.
Сообщение: неопределенная переменная: data_image
Что означает, что где-то в коде вы вызов переменной с именем «data_image», которая не определена. Теперь, пожалуйста, обратите внимание, что это УВЕДОМЛЕНИЕ, поэтому могут быть случаи, когда ваш код будет работать хорошо, НО это плохая практика и может вызвать проблемы. (Как, например, в вашем случае).
Глядя на ваш код, следующий «блок»:
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
}
else
{
$image_path = base_url("uploads/".$post['raw_name'].$post['file_ext']);
$data['picture'] = $image_path;
$data_image = array('upload_data' => $this->upload->data());
}
//Upload file end
$data['picture'] = $data_image['upload_data']['file_name'];
Переменная $data_image
определяется только под «else
» заявление. Поэтому, если условие возвращает true, переменная $data_image
действительно не определена. В этом случае следующая команда:
$data['picture'] = $data_image['upload_data']['file_name'];
, основанная на переменной $data_image
, выдаст еще одну проблему:
Сообщение: попытка получить доступ к смещению массива по значению типа null
, поэтому $data['picture']
сейчас равно NULL
, что вызывает вашу последнюю проблему:
Столбец 'picture' не может быть пустым
Решение?
Убедитесь, что у вас есть значение для $ data_image, даже если условие возвращает true. Или, если это условие возвращает истину - обрабатывать вещи по-другому. Также обратите внимание, что может быть логическая проблема с функцией в условии, которое возвращает неожиданный результат.
(Условие: if ( ! $this->upload->do_upload())
)