$this->db->affected_rows()는 왜0을 반환합니까?
코드 시그니터 3에는 사용자를 삭제하기 위한 다음 기능이 기재되어 있습니다.
public function deleteUser($id) {
$this->db->trans_start();
$this->db->where('usma_user_id', $id);
$this->db->delete('ec_usma_usermain');
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE) {
$transResult = array(
'response' => 'Operation failed!',
'status' => TRUE
);
} else if ($this->db->trans_status() === TRUE) {
if($this->db->affected_rows() > 0 ) {
$transResult = array(
'response' => 'Operation executed successfully!',
'status' => TRUE
);
} else {
$transResult = array(
'response' => 'Unexpected error! Contact admin.',
'status' => FALSE
);
}
}
return $transResult;
}
위의 함수에서는 행이 있고 삭제되어도 반환되는 응답은 다음과 같습니다.
예기치 않은 오류!관리자에게 문의하다
그 말은 즉, 가치의 반환되고
echo $this->db->affected_rows();
0 입니다.그래서 나는 의 출력을 확인했다(에코
echo $this->db->affected_rows();
전에
echo $this->db->trans_complete();
실행되면 삭제된 행의 수(내 경우 1행)가 반환되며, 같은 줄의 코드가 다음에 쓰여질 경우
echo $this->db->trans_complete();
0이 반환됩니다.그것은 왜 그럴까?
이 페이지의 메모를 확인해 주세요.https://www.codeigniter.com/userguide3/database/helpers.html
"주의: MySQL "DELETE FROM TABLE"에서 영향을 받는 행이 0개 반환됩니다.데이터베이스 클래스에는 영향을 받는 행의 정확한 수를 반환할 수 있는 작은 해킹이 있습니다.디폴트로는 이 해킹은 유효하지만 데이터베이스 드라이버 파일에서는 무효로 할 수 있습니다.
이 해킹이 유효하게 되어 있는 한(그리고 당신의 질문에서 나온 것처럼 들립니다), 회피책은 단순히 다음 파일을 저장하는 것입니다.affected_rows
쿼리를 실행한 후 트랜잭션을 종료하기 전에 선택합니다.다음과 같이 됩니다.
public function deleteUser($id) {
$this->db->trans_start();
$this->db->where('usma_user_id', $id);
$this->db->delete('ec_usma_usermain');
//store the affected_row value here
$affectedRows=$this->db->affected_rows();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE) {
$transResult = array(
'response' => 'Operation failed!',
'status' => TRUE
);
} else if ($this->db->trans_status() === TRUE) {
//recall the stored value here
if($affectedRows > 0 ) {
$transResult = array(
'response' => 'Operation executed successfully!',
'status' => TRUE
);
} else {
$transResult = array(
'response' => 'Unexpected error! Contact admin.',
'status' => FALSE
);
}
}
return $transResult;
}
정말로.$this->db->affected_rows()
마지막 문의 영향을 받는 행 수를 반환합니다.여기 마지막 진술입니다.$this->db->trans_complete()
영향을 받는 행의 수가0
.
언급URL : https://stackoverflow.com/questions/53050097/why-do-this-db-affected-rows-returns-0
'programing' 카테고리의 다른 글
Vue js가 사용자 지정 구성 요소를 렌더링하지 않음 (0) | 2023.01.20 |
---|---|
MySQL을 datetime 필드와 비교()(시간이 아닌 날짜만) (0) | 2023.01.20 |
JavaScript "new Array(n)" 및 "Array.protype.map" 이상 (0) | 2023.01.20 |
Vuex 상태를 업데이트할 때 V-snackbar가 표시되지 않음 (0) | 2023.01.20 |
PHP 키워드 'var'의 역할은 무엇입니까? (0) | 2023.01.20 |