Php 是否有类似$this的东西->;db->;CodeIgniter中匹配的_行()?

Php 是否有类似$this的东西->;db->;CodeIgniter中匹配的_行()?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我想更新表中的条目,如果不存在,则插入。我使用的是受影响的_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, $datains

我想更新表中的条目,如果不存在,则插入。我使用的是
受影响的_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);
}
但是,如果没有行受到影响,但存在供应商id的条目,则该方法不起作用

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__);
}

代替控制器,您需要检查模型文件中的
$this->db->impacted_rows()
,并
返回TRUE或FALSE
。要检查重复条目,您需要使用select query进行检查

型号

 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;
    }
}
控制器

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

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

不,没有这样的功能


infected_rows()
就是这样工作的,因为数据库就是这样工作的——它不会为实际上没有更新的行返回反馈。这不在框架的控制范围内。

粘贴
update\u vendor\u login\u time()的代码。
model函数!!用更新函数代码编辑的问题除了在更新或插入之前触发get查询外,还有其他方法吗?这会有什么区别?如果datainsert值已经存在,它仍将返回false,因此将插入重复的条目检查此项以防止重复条目,这意味着我必须在更新或插入之前触发get查询