在Codeigniter + PostgreSql

时间:2016-03-26 09:17:24

标签: php postgresql codeigniter pdo codeigniter-3

我通过PDO使用Codeigniter 3.0.4 + PostgreSql。 我只想获得我刚刚更新过的行数。与模型相关的切割:

public function some_count_update($sid)
{
    $this->db->set('some_field', 'some_field+1', FALSE);
    $this->db->where('id', $sid, FALSE);
    $this->db->update('some_table');
    $this->db->affected_rows();
    return ($this->db->num_rows()>0) ? true : false;
}

PHP返回错误:

Fatal error: Call to undefined method CI_DB_postgre_driver::num_rows() in ...

我认为问题是,CI使用php函数num_romws(),但是对于Postgres,php有一个特殊的函数pg_num_rows()。我尝试修改CI的系统类(DB_result> num_rows(),添加了前缀" pg _")但这并没有帮助。

2 个答案:

答案 0 :(得分:1)

要检查更新中受影响的行,请使用$this->db->affected_rows()代替$this->db->num_rows()并在后面添加列名称

public function some_count_update($sid)
{
    $this->db->set('some_field', '`some_field`+1', FALSE);// column name in backtick
    $this->db->where('id', $sid);// remove false 
    $this->db->update('some_table');
    return ($this->db->affected_rows()>0) ? true : false;// use affected_rows
}

阅读https://www.codeigniter.com/user_guide/database/examples.html

答案 1 :(得分:0)

这很好:)

return ($this->db->where('id', $sid)->get('some_table')->num_rows()>0) ? true : false;