当我的用户登录到活动的模型中时。如果用户在更新属于用户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()
");
}
}
通过唯一的ID
或primary key
从DB
中获取结果,然后检查查询结果。如果结果计数为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);
}
}
}