개발자 Q&A

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

2025.08.01 08:35

mysqli::commit 관련 문의

목록
  • 웹퍼포먼스광 1일 전 2025.08.01 08:35
  • 4
    1
저는 MySQLi를 사용하여 데이터베이스 연동을 진행 중인데, commit 메소드에 대해 궁금하네요.

mysql 연결을 해두었을 때, insert, update, delete 쿼리를 수행하였습니다. 그리고 그 후에 mysql_commit() 함수를 호출하였습니다. 그런데 이 때 mysql_commit() 함수를 호출하지 않아도 데이터베이스에 반영되는 현상이 있습니다.

mysql_commit() 함수를 호출하는 이유가 뭔가요? 그리고 mysql_commit() 함수를 호출하지 않아도 데이터베이스에 반영되는 이유가 뭔가요?

위의 상황에서 mysql_commit() 함수를 호출할 필요가 있는지 확인해 주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    MySQLi를 사용하여 데이터베이스 연동을 진행할 때, commit 메소드는 트랜잭션을 완료하는 역할을 합니다.

    트랜잭션은 데이터베이스의 상태를 일시적으로 변경하고, 변경된 상태를 확인한 후에 완료하거나 취소할 수 있는 기능입니다.

    MySQLi에서 트랜잭션을 사용하기 위해서는 mysqli_begin_transaction() 함수를 호출하여 트랜잭션을 시작해야 합니다.

    이후에 insert, update, delete 쿼리를 수행한 후에 mysqli_commit() 함수를 호출하여 트랜잭션을 완료할 수 있습니다.

    하지만, MySQLi에서 기본적으로 autocommit 모드를 사용하고 있기 때문에, insert, update, delete 쿼리를 수행한 후에 데이터베이스에 자동으로 반영됩니다.

    따라서, mysqli_commit() 함수를 호출하지 않아도 데이터베이스에 반영되는 현상이 발생하는 것입니다.

    하지만, autocommit 모드를 사용하지 않는 경우에는 mysqli_commit() 함수를 호출하지 않으면 데이터베이스에 반영되지 않습니다.

    따라서, 위의 상황에서 mysqli_commit() 함수를 호출할 필요는 없습니다.

    하지만, 트랜잭션을 사용하는 경우에는 mysqli_commit() 함수를 호출하여 트랜잭션을 완료하는 것이 좋습니다.

    또한, autocommit 모드를 사용하지 않는 경우에는 mysqli_commit() 함수를 호출하여 데이터베이스에 반영하는 것이 좋습니다.

    예제를 통해 살펴보겠습니다.

    #hostingforum.kr
    php
    
    // autocommit 모드를 사용하는 경우
    
    $mysqli = new mysqli("localhost", "username", "password", "database");
    
    $mysqli->autocommit(true); // autocommit 모드를 사용
    
    
    
    // insert 쿼리를 수행
    
    $result = $mysqli->query("INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')");
    
    
    
    // 데이터베이스에 자동으로 반영
    
    


    #hostingforum.kr
    php
    
    // autocommit 모드를 사용하지 않는 경우
    
    $mysqli = new mysqli("localhost", "username", "password", "database");
    
    $mysqli->autocommit(false); // autocommit 모드를 사용하지 않음
    
    
    
    // insert 쿼리를 수행
    
    $result = $mysqli->query("INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')");
    
    
    
    // 데이터베이스에 반영되지 않음
    
    $mysqli->commit(); // 데이터베이스에 반영
    
    


    #hostingforum.kr
    php
    
    // 트랜잭션을 사용하는 경우
    
    $mysqli = new mysqli("localhost", "username", "password", "database");
    
    $mysqli->begin_transaction(); // 트랜잭션을 시작
    
    
    
    // insert 쿼리를 수행
    
    $result = $mysqli->query("INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')");
    
    
    
    // 데이터베이스에 반영되지 않음
    
    $mysqli->commit(); // 데이터베이스에 반영
    
    

    2025-08-01 08:40

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

검색

게시물 검색