gpt4 book ai didi

php - Codeigniter 和 AJAX MySQL 错误处理

转载 作者:行者123 更新时间:2023-11-29 16:23:05 24 4
gpt4 key购买 nike

我是 CI3 的新手,并且创建了一个简单的表单,它将单个值 (age) 插入到 MySQL 数据库 (test) 表中。我的表单中没有任何前端验证,我正在尝试服务器端验证。

age 列在数据库中具有以下属性;

  • 姓名:年龄
  • 数据类型:int
  • 允许非空:否
  • 默认:无默认

每当我在表单输入age中输入非数字值(例如“john”)时,表单都会成功提交,但数据库会将此值保存为0这是预期的行为吗?

看来我能够在数据库中输入一个非整数,尽管它被设置为数据类型 int

我预计会抛出以下错误;

/* SQL Error (1054): Unknown column 'john' in 'where clause' */

每当我尝试手动插入非 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();
}
}

Controller

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;
});
});

最佳答案

我不知道为什么你想要依赖sql错误,而你在codeigniter的验证库中拥有你可能需要的一切,以便在插入之前进行检查,如下所示:

public function insert_form_data()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('age', 'Age', 'required|integer');
if ($this->form_validation->run() == FALSE)
{
$data['validation'] = validation_errors();
}
else
{
$data['validation'] = "Success";
}
$data["result"] = $this->Form_model->insert_form_data();
echo json_encode($data);
}

关于php - Codeigniter 和 AJAX MySQL 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54425269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com