개발 공부중

[TIL] PHP로 DB 다루기: MySQLi vs PDO, 무엇을 선택할까? 본문

카테고리 없음

[TIL] PHP로 DB 다루기: MySQLi vs PDO, 무엇을 선택할까?

개발자 leelee 2026. 5. 5. 14:51

엄청 오랜만에 PHP... 기억이 하나도 안난다.

개인적으로 새로운 PHP 프로젝트를 시작하려는데,

데이터베이스를 연결 하는 단계에서 쓸 수 있는게  MySQLi와 PDO 가 있었다. 

데이터베이스(DB)를 어떤 방식으로 연결하고 관리할 것인가? 에 대한 고민

 

그래서 써보는 MySQLiPDO 정리

1. MySQLi 와 PDO 란?

  • MySQLi (MySQL Improved): 딱 이름부터 "나 MySQL 전용이야"라고 말하고 있음. MySQL/MariaDB에 최적화된 드라이버.
  • PDO (PHP Data Objects): 일종의 '통번역기' . MySQL뿐만 아니라 SQLite, PostgreSQL 등 다양한 DB를 같은 방식으로 다룰 수 있게 해주는 추상화 계층.

2. MySQLi 와 PDO 비교

  MySQLi PDO
지원 DB 오직 MySQL/MariaDB 12종 이상의 다양한 DB
코딩 스타일 절차지향 + 객체지향 객체지향 (Modern)
Named Parameter 지원 안 함 (? 사용) 지원 (:name 사용)
에러 처리 조금 번거로움 Exception(예외) 처리 우수
성능 미세하게 빠름 아주 미세하게 느림

3. 사용법

[MySQLi 방식] :위치 기반 

$stmt = $mysqli->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
// ?가 많아지면 나중에 힘듦
$stmt->bind_param("ssi", $name, $email, $age);

 

[PDO 방식] : 이름 기반

$stmt = $pdo->prepare("INSERT INTO users (name, email, age) VALUES (:name, :email, :age)");
// 순서 상관없이 이름으로 매칭
$stmt->execute(['name' => $name, 'email' => $email, 'age' => $age]);

 

4. 추천 방식?

  • MySQLi를 추천하는 경우:
    1. 오직 MySQL만 사용함이 확실하고
    2. 극한의 성능 최적화가 필요한 특수한 상황일 때
  • PDO를 추천하는 경우:
    1. 현대적인 PHP 개발 표준을 따르고 싶을 때
    2. 가독성 좋고 유지보수가 쉬운 코드를 원할 때
    3. 미래에 DB가 바뀔 가능성이 단 1%라도 있을 때

 

나의 경우, PDO 방식을 선택했다.

MySQLi는 MySQL 계열의 DB에서만 작동하지만, PDO는 다른 디비도 지원가능하다.

그리고 이름을 직접 지정할 수 있어서 코드가 훨씬 직관적임

 

끝.

 

Comments