我是codeigniter的新手,并试图了解查询构建器功能。我目前有一个更新方法,我传递用户输入的数据来更新数据库中的记录。我注意到它似乎是成功的,无论我扔到哪种垃圾数据,我想知道是否有一个设置或我需要改变的东西,或者是什么。
如下所示,在我的模型中,我绕过用户输入的值并输入垃圾数据,但仍然成功。它只是插入0000-00-00。 DB中的DOB是日期数据类型。
我总是从中获得成功结果,并且它更新了数据库,因此技术上它成功了。我有控制措施来防止垃圾数据被发送到模型,但是它不会让我感觉温暖模糊,因为它知道它的行为是这样的。
控制器:
$updateResult = $this->Patients_model->update_patient_profile($this->data['post_data']);
if($updateResult === true)
{
$this->data['patient_profile'] = $this->Patients_model->get_patient_profile($patientId);
$this->data['update_result'] = true;
$this->load->view('index', $this->data);
}
else
{
$this->data['update_result'] = false;
print_r($updateResult);
}
型号:
function update_patient_profile($data)
{
$patient_id = $data['patient_id'];
unset($data['patient_id']);
$data['dob'] = 'this is not even a date'; //will store 0000-00-00 in DB.
$this->db->where('patient_id', $patient_id);
$this->db->update($this->patientsTable, $data);
if($this->db->affected_rows()) {
return true;
}
else
{
return $this->db->error();
}
}
答案 0 :(得分:3)
您可以使用PHP检查并检查无效日期的错误。试试这个:
function update_patient_profile($data)
{
$patient_id = $data['patient_id'];
unset($data['patient_id']);
$check_date = $data['dob'];
if(strtotime($check_date))
{
$data['dob'] = date("Y-m-d",strtotime($check_date)); // to confirm date is valid and equivalant to database format
}
else
{
throw new Exception("Invalid date", 1);
}
$data['dob'] = 'this is not even a date'; //will store 0000-00-00 in DB.
$this->db->where('patient_id', $patient_id);
$this->db->update($this->patientsTable, $data);
if($this->db->affected_rows()) {
return true;
}
else
{
return $this->db->error();
}
}