안녕하세요! 오늘은 PHP에서 데이터베이스 연동 시 많이 사용하는 PDO와 MySQLi의 차이점을 아주 쉽게 정리해보겠습니다.
둘 다 MySQL을 연결할 수 있지만 각각의 특징과 장단점이 있답니다.
📌 PDO란?
- PHP Data Objects의 약자
- MySQL뿐만 아니라 Oracle, PostgreSQL, SQLite 등 다양한 DB 지원
- 객체지향 방식으로만 사용 가능
- Prepared Statement로 보안 강화 가능 (SQL Injection 방지)
📌 MySQLi란?
- MySQL Improved의 약자
- MySQL 전용
- 절차형과 객체지향 방식 모두 지원
- Prepared Statement, 트랜잭션, 멀티쿼리 지원
✅ PDO vs MySQLi 비교표
구분 | PDO | MySQLi |
---|---|---|
지원 데이터베이스 | MySQL, Oracle, SQLite 등 다수 | MySQL 전용 |
사용 방식 | 객체지향만 지원 | 절차형 & 객체지향 지원 |
Prepared Statement | 지원 | 지원 |
트랜잭션 | 지원 | 지원 |
멀티쿼리 | 미지원 | 지원 |
✅ 간단한 사용 예제 비교
① PDO 예제
<?php
try {
$conn = new PDO("mysql:host=localhost;dbname=testdb", "user", "pass");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM members");
$stmt->execute();
while ($row = $stmt->fetch()) {
echo $row['name'];
}
} catch (PDOException $e) {
echo "DB 오류: " . $e->getMessage();
}
$conn = null;
?>
② MySQLi 객체지향 예제
<?php
$conn = new mysqli("localhost", "user", "pass", "testdb");
if ($conn->connect_error) {
die("연결 실패: " . $conn->connect_error);
}
$result = $conn->query("SELECT * FROM members");
while ($row = $result->fetch_assoc()) {
echo $row['name'];
}
$conn->close();
?>
📌 마무리
MySQLi는 MySQL 전용, PDO는 다양한 데이터베이스 지원이라는 큰 차이가 있어요.
여러 DB를 활용할 계획이 있다면 PDO를, MySQL만 사용한다면 MySQLi를 선택하는 게 효율적입니다.
구독과 댓글도 많이 부탁드려요!
#PHP #PDO #MySQLi #DB연동 #웹개발 #PHP기초