>  기사  >  백엔드 개발  >  CodeIgniter에서 생성, 업데이트 또는 삭제 쿼리의 성공을 어떻게 안정적으로 감지할 수 있습니까?

CodeIgniter에서 생성, 업데이트 또는 삭제 쿼리의 성공을 어떻게 안정적으로 감지할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-31 04:13:30281검색

How can I reliably detect the success of a Create, Update, or Delete query in CodeIgniter?

CodeIgniter에서 쿼리 생성, 업데이트 또는 삭제 성공 감지

CodeIgniter에서 데이터베이스 작업을 수행할 때 성공. 그렇지 않으면 데이터 불일치 또는 잘못된 결과가 사용자에게 표시될 수 있습니다.

잘못된 접근 방식:

제공된 컨트롤러 방법은 0이 아닌 반환을 가정합니다. update() 모델 메소드의 값은 성공을 나타냅니다. 그러나 쿼리가 행 업데이트에 실패하더라도 모델이 0이 아닌 값을 반환할 수 있으므로 이는 신뢰할 수 있는 접근 방식이 아닙니다.

올바른 접근 방식:

올바른 접근 방식 데이터베이스 작업의 성공을 감지하려면 다음 단계를 사용하는 것이 좋습니다.

컨트롤러:

  • URL이 아닌 POST를 통해 입력 데이터를 안전하게 수신합니다.
  • CodeIgniter 데이터베이스 클래스의 Affected_rows() 메서드를 사용하여 쿼리 실행 후 영향을 받은 행 수를 확인합니다.
  • 사용자를 리디렉션하고 행 수에 따라 성공 또는 오류 메시지를 표시합니다. 영향을 받은 행.

모델:

  • 데이터베이스 쿼리 및 오류 검사를 처리합니다.
  • update() 메소드를 사용하세요. CodeIgniter 데이터베이스 클래스를 사용하여 쿼리를 실행합니다.
  • 컨트롤러가 작업 결과를 결정할 수 있도록 영향을 받은 행 수를 반환합니다.

예:

<code class="php">// Controller
public function delete($user_id)
{
    if ($this->input->server('REQUEST_METHOD') == 'POST') {
        $result = $this->Crm_user_model->delete($user_id);
        if ($result === false) {
            add_flash_message('alert', 'Failed to delete user');
        } else if ($result == 0) {
            add_flash_message('info', 'User not found or already deleted');
        } else {
            add_flash_message('info', 'User deleted successfully');
        }
    }
}</code>
<code class="php">// Model
public function delete($user_id)
{
    $this->db->delete('user_table', ['user_id' => $user_id]);
    return $this->db->affected_rows();
}</code>

추가 고려 사항:

  • 제공된 솔루션에서 언급했듯이 무단 방지를 위해 컨트롤러와 모델 모두에 보안 검사를 포함하는 것이 좋습니다. 액세스 또는 악의적인 데이터 입력.
  • 데이터베이스 레코드의 변경 사항을 추적하려면 시스템에 변경 기록을 유지하는 것이 좋습니다.
  • 복잡한 데이터베이스 작업의 경우 다음을 제공하는 CodeIgniter의 ActiveRecord 패턴을 사용하는 것이 좋습니다. 데이터베이스 조작에 대한 보다 구조화된 접근 방식.

위 내용은 CodeIgniter에서 생성, 업데이트 또는 삭제 쿼리의 성공을 어떻게 안정적으로 감지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.