- Today
- Total
Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 티스토리챌린지
- 트러블슈팅
- 오류해결
- Hostinger
- mysqli
- 이클립스
- url파라미터
- iframe
- 엘리멘터
- 문제해결
- spring boot
- 환경세팅
- 오라클
- 클론코딩
- PDO
- PLSQL
- 의존성주입
- 워스프레스
- 오블완
- TIL
- 백엔드
- sql
- 워드프레스
- 프로시저
- javascript
- MariaDB
- 쿼리개선
- Oracle
- dbeaver
- PROCEDURE
Archives
개발 공부중
[TIL] PHP로 DB 다루기: MySQLi vs PDO, 무엇을 선택할까? 본문
엄청 오랜만에 PHP... 기억이 하나도 안난다.
개인적으로 새로운 PHP 프로젝트를 시작하려는데,
데이터베이스를 연결 하는 단계에서 쓸 수 있는게 MySQLi와 PDO 가 있었다.
데이터베이스(DB)를 어떤 방식으로 연결하고 관리할 것인가? 에 대한 고민
그래서 써보는 MySQLi와 PDO 정리
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를 추천하는 경우:
- 오직 MySQL만 사용함이 확실하고
- 극한의 성능 최적화가 필요한 특수한 상황일 때
- PDO를 추천하는 경우:
- 현대적인 PHP 개발 표준을 따르고 싶을 때
- 가독성 좋고 유지보수가 쉬운 코드를 원할 때
- 미래에 DB가 바뀔 가능성이 단 1%라도 있을 때
나의 경우, PDO 방식을 선택했다.
MySQLi는 MySQL 계열의 DB에서만 작동하지만, PDO는 다른 디비도 지원가능하다.
그리고 이름을 직접 지정할 수 있어서 코드가 훨씬 직관적임
끝.
Comments