MySQL ошибка 1366 появляется при оставлении ненулевых столбцов со значениями по умолчанию пустыми

Я новичок в 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;

ОБНОВЛЕНИЕ: я вставляю несколько значений столбца с тем же оператором вставки.

1

Решение

Согласно вашему описанию, вы установили столбец ‘salary’ целочисленным столбцом, но вставляете '' как пустая строка.

так что вам нужно установить 0 вместо '' в графе «зарплата».

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]