2017-08-20 10 views
0

私はcodeigniterが新しく、クエリービルダーの機能について心がけようとしています。私は現在、データベース内のレコードを更新するためにユーザーが入力したデータを渡す更新メソッドを持っています。私はそれがどんな種類のジャンクデータであっても成功しているように見えました。変化する必要がある設定や何かがあるかどうかは疑問です。codeigniter query builderはdbをちょうど何かで更新します

私のモデルでは、ユーザーが入力した値をバイパスして、迷惑データを入れていますが、それでも成功しています。それは単に0000-00-00を挿入するだけです。 DBのDOBは日付データ型です。

私はいつもこれから成功の結果を得て、DBを更新するので、技術的に成功しました。私は、ジャンクデータがモデルに送信されるのを防ぐためのコントロールを用意していますが、このように動作していることを知っている暖かいファジーを私に与えません。

コントローラー:

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

答えて

3

あなたはPHPと無効な日付のthorwエラーで確認することができます。これを試してみてください:

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(); 
    } 
} 
+0

私はコントローラーで例外をスローするのと同じようにしています。私はコントロールの中で私のすべての消毒をしています。より一般的な意味で、コントローラーやモデルで行うべきことは何ですか?私は少し読んでいたし、さまざまな意見があったようだ。 – hyphen

関連する問題