Я новичок в CodeIgniter и PHP в целом. Я сделал новую таблицу с некоторыми ненулевыми столбцами. Все столбцы, не равные NULL, имеют значения по умолчанию, установленные в соответствии с их типом данных, поэтому VARCHAR имеет пустую строку, в то время как числовые типы по умолчанию имеют 0.
Однако, как только я заполняю форму (где я намеренно оставляю пустые столбцы пустыми, чтобы проверить их) и нажимаю кнопку отправки, выдается следующая ошибка:
Номер ошибки: 1366
Неверное целочисленное значение: » для столбца ‘зарплата’ в строке 1
Он вставляет двойные кавычки для пустой строки, когда обнаруживает, что пользователь не ввел никакого значения. Я проверил, проверил режим MySQL, и он был переведен в строгий режим. Однако, поскольку я использую многопользовательскую БД (Azure-clearDB), они не позволят мне получить супер привилегии, и я не могу отключить строгий режим (или я мог?)
Есть ли способ отключить этот режим, или есть какой-нибудь другой обходной путь? Я не хочу явно добавлять предложение SQL if-else для каждого столбца, так как это было бы жестко закодировано. Пожалуйста помоги
Код ниже:
ДИСПЕТЧЕР:
$additional_data = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'phone' => $this->input->post('phone'),
'salary' => $this->input->post('salary'));
if ($this->form_validation->run() == true && $this->ion_auth->register($username, $password, $email, $additional_data))
{
$identity = $this->ion_auth->where('email', strtolower($this->input->post('email')))->users()->row();
$forgotten = $this->ion_auth->forgotten_password($identity->{$this->config->item('identity', 'ion_auth')});
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('auth/success', 'refresh');
МОДЕЛЬ:
//filter out any data passed that doesnt have a matching column in the users table
//and merge the set user data and the additional data
$user_data = array_merge($this->_filter_data($this->tables['users'], $additional_data), $data);
$this->trigger_events('extra_set');
$this->db->insert($this->tables['users'], $user_data);
$id = $this->db->insert_id();
//add in groups array if it doesn't exits and stop adding into default group if default group ids are set
if( isset($default_group->id) && empty($groups) )
{
$groups[] = $default_group->id;
}
if (!empty($groups))
{
//add to groups
foreach ($groups as $group)
{
$this->add_to_group($group, $id);
}
}
$this->trigger_events('post_register');
return (isset($id)) ? $id : FALSE;
ОБНОВЛЕНИЕ: я вставляю несколько значений столбца с тем же оператором вставки.
Согласно вашему описанию, вы установили столбец ‘salary’ целочисленным столбцом, но вставляете ''
как пустая строка.
так что вам нужно установить 0
вместо ''
в графе «зарплата».
Других решений пока нет …