문제:
CodeIgniter 트랜잭션은 안전한 데이터베이스 삽입에 안정적입니다. 그러나 트랜잭션 경계(trans_start 및 trans_complete) 내에서 외부 함수를 호출하는 경우 해당 함수 내의 데이터베이스 작업은 트랜잭션 내에서 처리되지 않습니다. 이로 인해 오류가 발생하고 롤백이 완료되지 않을 수 있습니다.
제안된 솔루션:
이 문제를 해결하려면 롤백 검사를 추가하여 외부 기능 내에서 데이터베이스 작업을 수동으로 처리할 수 있습니다. 각 기능 내에서. 오류가 발생하면 롤백이 시작됩니다.
코드:
// Function within Model public function insert_function($data) { $this->db->insert('table_name', $data); if ($this->db->error()) { $this->db->trans_rollback(); return false; // Error occurred } return true; // Success } // Calling Function within Transaction in Model $this->db->trans_start(); $result = $this->insert_function($data); if (!$result) { $this->db->trans_rollback(); } $this->db->trans_complete();
대체 방법:
다른 방법 접근 방식은 trans_start 및 trans_complete 경계 내의 함수 외부에 트랜잭션 처리 논리를 구현하는 것입니다. 이렇게 하면 외부 기능 내의 모든 데이터베이스 작업이 트랜잭션 내에서 처리됩니다.
코드:
// Function within Model public function insert_function($data) { $this->db->insert('table_name', $data); } // Calling Function within Transaction in Model $this->db->trans_start(); $this->insert_function($data); if ($this->db->error()) { $this->db->trans_rollback(); } $this->db->trans_complete();
중요 고려 사항:
위 내용은 CodeIgniter의 여러 함수 호출에서 트랜잭션을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!