Я (новичок в) использую CI3 и создал простую форму, которая вставит одно значение (age
) в таблицу базы данных MySQL (test
).У меня нет внешнего интерфейса в форме, я экспериментирую с проверкой на стороне сервера.
Столбец age
содержит следующие атрибуты в базе данных:
- имя: возраст
- тип данных: int
- разрешить не ноль: нет
- по умолчанию: нет по умолчанию
Всякий раз, когда я ввожу не числовое значение вФорма ввода age
(например, «Джон»), форма успешно отправляется, но база данных сохраняет это значение как 0
. Это ожидаемое поведение?
Кажется, я могу ввести не целое число в базу данных, хотя он настроен как тип данных int
.
Я бы ожидалследующая ошибка, которая будет брошена;
/ * Ошибка SQL (1054): неизвестный столбец 'john' в 'предложении where' * /
Эта ошибка (как и ожидалось) появляется всякий раз, когда я пытаюсь вручнуювставить не int значение (через heidisql / phpmyadmin).
Итак, как я могу проверить эту ошибку в моем приложении и принять соответствующие меры?
Мой код указан ниже;
Модель
public function insert_form_data(){
$data = array(
'age' => $this->input->post('age')
);
$result = $this->db->insert('test', $data);
if ($this->db->affected_rows() > 0) {
return TRUE;
}
else {
return $this->db->error();
}
}
Контроллер
public function insert_form_data(){
$data = $this->Form_model->insert_form_data();
echo json_encode($data);
}
Вид
<form name="myform" id="myform">
<input name="age" type="text">
<button type="submit" id="submit">Submit</button>
</form>
<p id="message"></p>
$(document).ready(function() {
$('#submit').on('click', function(event) {
event.preventDefault();
$.ajax({
url: "form/insert_form_data",
method: "post",
data: $("#myform").serialize(),
dataType: 'json',
success: function(response) {
if (response == true) {
$('#message').text('Form submitted!');
}
},
error: function(response) {}
});
return false;
});
});