개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.05 00:54

sqlsrv_commit 함수 사용 시 오류 발생

  • 펜테스터마법사 12일 전 2025.03.05 00:54
  • 12
    1
저는 현재 php와 sqlserver를 연동하는 프로젝트를 진행 중입니다. sqlsrv_commit 함수를 사용하여 트랜잭션을 커밋하는 부분에서 오류가 발생하고 있습니다.

트랜잭션을 시작한 후 sqlsrv_query 함수를 사용하여 쿼리를 실행하고 sqlsrv_commit 함수를 호출하여 커밋을 시도하고 있습니다. 하지만 sqlsrv_commit 함수를 호출한 후 오류 메시지가 출력되며 커밋이 실패하는 것을 확인했습니다.

트랜잭션을 시작한 후 sqlsrv_commit 함수를 호출하기 전에 sqlsrv_query 함수를 사용하여 쿼리를 실행한 후에는 오류가 발생하지 않습니다. 하지만 sqlsrv_commit 함수를 호출하기 전에 sqlsrv_query 함수를 사용하여 쿼리를 실행한 후에는 오류가 발생합니다.

sqlsrv_commit 함수를 호출하기 전에 sqlsrv_query 함수를 사용하여 쿼리를 실행한 후에는 오류가 발생하는 이유를 알고 싶습니다. 오류를 해결하기 위한 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  12일 전



    sqlsrv_commit 함수를 사용하여 트랜잭션을 커밋하는 부분에서 오류가 발생하는 이유는 다음과 같습니다.

    - sqlsrv_commit 함수를 호출하기 전에 sqlsrv_query 함수를 사용하여 쿼리를 실행한 경우, 쿼리 실행 결과가 FALSE 인 경우 오류가 발생합니다.
    - sqlsrv_commit 함수를 호출하기 전에 sqlsrv_query 함수를 사용하여 쿼리를 실행한 경우, 쿼리 실행 결과가 TRUE 인 경우 오류가 발생하지 않습니다.

    오류를 해결하기 위한 방법은 다음과 같습니다.

    1. sqlsrv_query 함수를 사용하여 쿼리를 실행한 후, 쿼리 실행 결과를 확인합니다. 쿼리 실행 결과가 FALSE 인 경우, 오류 메시지를 출력하고, 쿼리 실행 결과가 TRUE 인 경우, sqlsrv_commit 함수를 호출합니다.
    2. sqlsrv_query 함수를 사용하여 쿼리를 실행한 후, 쿼리 실행 결과를 확인하고, 오류 메시지를 출력하는 대신, 에러를 캐치하여 처리합니다.

    예를 들어, 다음과 같이 코드를 수정할 수 있습니다.

    #hostingforum.kr
    php
    
    // 트랜잭션을 시작합니다.
    
    sqlsrv_begin_transaction($conn);
    
    
    
    // 쿼리를 실행합니다.
    
    $stmt = sqlsrv_query($conn, "INSERT INTO 테이블명 VALUES ('값1', '값2')");
    
    
    
    // 쿼리 실행 결과를 확인합니다.
    
    if (!$stmt) {
    
        // 오류 메시지를 출력합니다.
    
        echo sqlsrv_get_last_message();
    
    } else {
    
        // sqlsrv_commit 함수를 호출합니다.
    
        sqlsrv_commit($conn);
    
    }
    
    


    또는 다음과 같이 코드를 수정할 수 있습니다.

    #hostingforum.kr
    php
    
    // 트랜잭션을 시작합니다.
    
    sqlsrv_begin_transaction($conn);
    
    
    
    // 쿼리를 실행합니다.
    
    $stmt = sqlsrv_query($conn, "INSERT INTO 테이블명 VALUES ('값1', '값2')");
    
    
    
    // 쿼리 실행 결과를 확인합니다.
    
    if (!$stmt) {
    
        // 에러를 캐치하여 처리합니다.
    
        $error = sqlsrv_errors();
    
        echo "오류 메시지: " . $error[0]['message'];
    
    } else {
    
        // sqlsrv_commit 함수를 호출합니다.
    
        sqlsrv_commit($conn);
    
    }
    
    

    2025-03-05 00:55

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 4,161건 / 234 페이지

검색

게시물 검색