본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP form + view + PDO INSERT — 트랜잭션 처리 완전 정리

by 왕진 2026. 6. 19.
반응형

 

 

Web Development · PDO INSERT + Transaction

폼 + PDO INSERT —
beginTransaction / commit / rollBack 패턴

DB 작업의 안전한 일괄 처리
시작 핵심 코드
try{ $pdo->beginTransaction(); $sql = "INSERT INTO member (last_name, first_name, age) VALUES (:last_name, :first_name, :age)"; $stmh = $pdo->prepare($sql); $stmh->bindValue(':last_name', $_POST['last_name'], PDO::PARAM_STR); $stmh->bindValue(':first_name', $_POST['first_name'], PDO::PARAM_STR); $stmh->bindValue(':age', $_POST['age'], PDO::PARAM_INT); $stmh->execute(); $pdo->commit(); print "데이터를 ".$stmh->rowCount()."건 입력하였습니다."; }catch(PDOException $Exception){ $pdo->rollBack(); print "오류:".$Exception->getMessage(); }

1 트랜잭션이란?

여러 DB 작업을 한 묶음으로 처리하는 개념. 도중에 오류가 나면 모두 취소해 일관성 보장.

예: 계좌 이체 — A 계좌 차감 + B 계좌 입금이 한 트랜잭션. 중간에 실패하면 차감도 취소.

2 트랜잭션 3단
$pdo->beginTransaction(); // 1) 시작 // ... 여러 INSERT/UPDATE/DELETE ... $pdo->commit(); // 2) 모두 성공 → 영구 반영 // 또는 오류 시 $pdo->rollBack(); // 3) 모두 취소 → 이전 상태로

3 bindValue의 3번째 인자 — 데이터 타입
PDO::PARAM_STR // 문자열 PDO::PARAM_INT // 정수 PDO::PARAM_BOOL // 불리언 PDO::PARAM_NULL // null

명시하면 DB가 더 정확히 처리. 생략 시 기본 PARAM_STR.


 

반응형

 

4 rowCount()

마지막 SQL이 영향을 준 행 개수를 반환. INSERT 시 추가된 행, UPDATE 시 변경된 행 수 등.


5 commit() 빠뜨리면?
트랜잭션 시작 후 commit 안 부르면 변경사항이 영구 저장 안 됨. 페이지 종료 시 자동 롤백되는 경우 있음. 반드시 commit 명시!

핵심 한 줄 요약

beginTransaction트랜잭션 시작 — 임시 변경
commit모든 변경을 영구 반영
rollBack모든 변경을 취소 — 이전 상태
PARAM_STR/INT바인딩 시 데이터 타입 명시
rowCount영향받은 행 개수
try/catch오류 시 자동 rollBack 처리
실무금융·예약·재고 등 일관성 중요한 작업
반응형

댓글