нулевые значения code igniter php отправляются в базу данных mysql в виде нулей (0)

#php #mysql #codeigniter

#php #mysql #codeigniter

Вопрос:

Я отправляю данные из html-формы на серверную часть code igniter PHP, а нулевые значения отправляются в базу данных в виде нулей. Есть ли какой-либо способ предотвратить это (оставить поля базы данных пустыми, если поле формы было пустым?)

Вид

 <?php echo form_open('control_form/add_all'); ?>
<label for="f_membername">Member Name<span class="red">*</span></label>
<input type="text" name="f_membername"/>
<?php echo form_submit('submit', 'Submit'); ?>
  

КОНТРОЛЛЕР

 function add_all(){
    $this->form_validation->set_rules('f_membername', 'Member Name', 'required');
    if ($this->form_validation->run() == TRUE)
    {
        #Add Member to Database
        $this->Model_form->add_all();
        $this->load->view('view_inc_header');
        $this->load->view('view_form_success');
        $this->load->view('view_inc_footer');
    }
}
  

Модель

 function add_all(){
    $v_membername = $this->input->post('f_membername');

    $data = array(

            'member_name' => $v_membername

    );

    $this->db->insert('members', $data);
}
  

Тип поля в MySQL для большинства полей — tinytext, а значение по умолчанию — «NONE»

Комментарии:

1. Какого типа поле базы данных, о котором идет речь, и имеет ли оно значение по умолчанию?

2. Я ничего не делал, чтобы указать значение по умолчанию для любого из полей — все мои поля публикуются в виде нулей, если они пустые, будь то текстовые поля, числа, сериализованные массивы и т.д.

3. Можете ли вы показать часть кодирования?

4. Вы когда-нибудь находили решение этой проблемы? или что было причиной проблемы? Возникает та же проблема.

Ответ №1:

Поля ввода вашей пустой формы являются не NULL, а «пустыми строками», поэтому они преобразуются в 0, если тип поля — INT. Чтобы вставить нулевые значения, просто замените » на нулевые значения в модели / контроллере.

Комментарии:

1. Но они отображаются как ноль, если они тоже текстовые. Это нормально?

Ответ №2:

Я думаю, что тип поля в вашей базе данных INT . Если вы вставите null данные в INT поле, они будут преобразованы в 0 (ноль).

Комментарии:

1. типом поля в большинстве случаев является tinytext или varchar

Ответ №3:

Выполняется ли какая-либо из ваших проверок формы с использованием substr() ? т. е.:

 substr(trim('SOME_FORM_VALUE'),0,7)
  

У меня была похожая проблема, и это было определенно потому, что substr () возвращал FALSE или 0.