如果不更新,则插入新行


Insert New Row If Not Update

当我的用户登录到活动的模型中时。如果用户在更新属于用户id的行之前已经登录,则应插入行。

问题:目前它只更新与前一行相同的行。如果用户id以前没有登录,它应该插入一个新行。

我怎样才能解决模型上的问题。

<?php 
class Model_account_activity extends CI_Model {
  public function updateActivity($key, $data) {
      $data['user_id'] = $this->session->userdata('user_id');
      if (isset($data['user_id'])) {
         $user_id = $data['user_id'];
      } else {
         $user_id = 0;
      }
      $query = $this->db->query("UPDATE `" . $this->db->dbprefix . "user_activity` SET 
         `user_id` = '" . (int)$user_id . "', 
         `key` = " . $this->db->escape($key) . ", 
         `data` = " . $this->db->escape(serialize($data)) . ",
         `date_added` = NOW()
      ");
      if ($query == FALSE) {
        $this->addActivity();
        return true;
      } else {
        return false;
      }
   }
    public function addActivity($key, $data) {
      $data['user_id'] = $this->session->userdata('user_id');
      if (isset($data['user_id'])) {
         $user_id = $data['user_id'];
      } else {
         $user_id = 0;
      }
      $this->db->query("INSERT INTO `" . $this->db->dbprefix . "user_activity` SET 
         `user_id` = '" . (int)$user_id . "', 
         `key` = " . $this->db->escape($key) . ", 
         `data` = " . $this->db->escape(serialize($data)) . ",
         `date_added` = NOW()
      ");
   }
} 

通过唯一的IDprimary keyDB中获取结果,然后检查查询结果。如果结果计数为0,则可以插入其他更新。实例

$this->db->where('column_name', $user_id); //Unique column or primary_key .It may be $user_id
$query = $this->db->get('table_name');
if($query->num_rows == 0)
{
    //Insert query
}
else
{
    //Update query
}

以下是由于@Please Wait现在都在工作,我是如何让它工作的。

<?php 
class Model_account_activity extends CI_Model {
  public function activity($key, $data) {
   $user_id = $this->session->userdata('user_id');
   $this->db->where('user_id', $user_id);
   $query = $this->db->get('user_activity');
   $data['user_id'] = $this->session->userdata('user_id');
   if (isset($data['user_id'])) {
      $user_id = $data['user_id'];
   } else {
      $user_id = 0;
   }
   if($query->num_rows() == FALSE) {
      $data = array(
        'user_id' => $user_id,
        'key' => $key,
        'data' => serialize($data),
        'date_added' => mdate('%Y-%m-%d %H:%i:%s', now())
      );
      $this->db->insert_id();
      $this->db->insert('user_activity', $data);
   } else {
      $data = array(
        'user_id' => $user_id,
        'key' => $key,
        'data' => serialize($data),
        'date_added' => mdate('%Y-%m-%d %H:%i:%s', now())
      );
      $this->db->where('user_id', $user_id);
      $this->db->update('user_activity', $data);
   }
  }
}