2016-04-05 8 views
0

テーブル内のエントリを更新するか、存在しない場合は挿入します。私はaffected_rows()関数を使用していますが、データが変更されていない場合は0を返し、重複する行を挿入します。

私は、このコードを使用して

$datainsert = array(
    "vendor_id" => $vendor_id, 
    "c_date_time" => date('Y-m-d H:i:s') 
); 
$this->api_vendor_model->update_vendor_login_time($vendor_id, $datainsert); 
if ($this->db->affected_rows() == 0) { 
    $this->api_vendor_model->insert_vendor_login_time($datainsert); 
} 

が、それは何の行が影響を受けていない場合には動作しませんが、エントリがVENDOR_IDのために存在しています。あなたはモデルファイルとreturn TRUE or FALSE$this->db->affected_rows()をチェックする必要が

function update_vendor_login_time($vendor_id, $data) { 
    $this->db->where('vendor_id', $vendor_id); 
    $this->db->update('fa_vendor_login_time', $data); 
    $this->error_check(__FUNCTION__); 
} 
+0

'update_vendor_login_time()'モデル関数のペーストコード!! – Saty

+0

質問は更新機能コード –

答えて

0

代わりのコントローラ。重複したエントリを選択クエリに

MODEL

function update_vendor_login_time($vendor_id, $data) { 
    $q = $this->db->select('id')// add your column nae here 
        ->from('fa_vendor_login_time') 
        ->where(array('vendor_id' => $vendor_id))->get(); 
    if ($q->num_rows() == 0) { 
     $this->db->where('vendor_id', $vendor_id); 
     $this->db->update('fa_vendor_login_time', $data); 
     $this->error_check(__FUNCTION__); 
     if ($this->db->affected_rows() > 0) { 
      return TRUE; 
     } else { 
      return FALSE; 
     } 
    }else{ 
     return TRUE; 
    } 
} 

のcontroler

$insert = $this->api_vendor_model->update_vendor_login_time($vendor_id, $datainsert); 
if (!$insert) { 

    $this->api_vendor_model->insert_vendor_login_time($datainsert); 
} 
+0

で編集されましたか?このように、既に存在しdatainsert値は、これが重複したエントリを防ぐために、重複したエントリ –

+1

チェックを挿入するかどうか、それはまだfalseを返しますhttp://stackoverflow.com/questions/13970942/how-to-prevent-duplicate-records-in-codeigniter – Saty

+0

あなたが挿入 –

0

を使用して、それをチェックするためにあなたの必要性を確認するにはいいえ、そのような機能はありません。それは、データベースがどのように動作するかだから

affected_rows()はそのように動作します - それは実際に更新されていない行についてのフィードバックを返すことはありません。これは、フレームワークのコントロール外です。

+0

は、更新または挿入する前にgetクエリを実行する以外の方法はありませんか? –

+1

いいえ、ありません。 – Narf

関連する問題