#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.