ProgramingTip

codeigniter의 활성 레코드 구문을 사용하여 mysql 데이터베이스의 증가 필드

bestdevel 2020. 12. 11. 19:13
반응형

codeigniter의 활성 레코드 구문을 사용하여 mysql 데이터베이스의 증가 필드


활성 레코드 구문을 사용하여 레코드 필드를 늘리려 고 시도하는 다음 php-codeigniter 펼쳐보기가 있습니다.

$data = array('votes' => '(votes + 1)');
$this->db->where('id', $post['identifier']);
$this->db->update('users', $data);

그러면 다음 SQL이 생성됩니다.

"UPDATE사용자 SET투표 = '(votes + 1)' WHEREID = '44'"

실행되지는 않지만 SQL은 내가 원하는 작업을 수행합니다. "UPDATE사용자 SET투표 = (votes + 1) WHEREID = '44'"`<-(votes + 1)

누구나 codeigniter의 활성 레코드 구문으로 다음 유형의 쿼리를 구현하는 방법을 알고 있습니까?


다음과 같이 할 수 있습니다.

$this->db->where('id', $post['identifier']);
$this->db->set('votes', 'votes+1', FALSE);
$this->db->update('users');

이것이 작동하는 이유는 세 번째 (선택적) FALSE 변수가 CodeIgniter에게 백틱 ( ')으로 생성 된 쿼리를 보호하지 않도록 지시하기 때문 입니다. 이는 생성 된 SQL이 다음

UPDATE users SET votes= votes + 1 WHERE id= '44'

같음 의미합니다. 알아 차리면 백틱이에서 제거되어 '(votes+1)'투표 속성을 1 씩 증가시키는 원하는 효과를 생성합니다.


$data = array('votes' => 'votes + 1');

foreach ($data as $key=>$val) {
    $this->db->set($key, $val, FALSE);
}

$this->db->where('id', $post['identifier']);
$this->db->update('users', $data);

다음과 같이 할 수 있습니다.

    public function increament_product_count(){
        $product_id=$this->input->post('product_id');
        $this->db->where('id', $product_id);
        $this->db->set('click_count', 'click_count+1', FALSE);
        $this->db->update('tbl_product');

    }

참고 URL : https://stackoverflow.com/questions/6373564/increment-field-of-mysql-database-using-codeigniters-active-record-syntax

반응형