代码点火器php null值以零(0)形式提交给mysql DB


code igniter php null values get submitted to mysql DB as zeros (0)

我将数据从html表单提交到代码点火器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"

您的空表单输入字段不是NULL,而是空字符串",因此如果字段类型为INT,它们将转换为0。要插入NULL值,只需在模型/控制器中将"替换为NULL值。

我认为数据库中的字段类型是INT。如果在INT字段中插入null数据,它将被转换为0(零)。

您的任何表单验证是否运行substr()的任何用法?即:

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

我也遇到了类似的问题,这肯定是因为substr()返回FALSE或0。