안녕하세요! 오늘은 PHP에서 데이터베이스 연동할 때 자주 듣게 되는 'MySQL'과 'MySQLi'의 차이점을 아주 쉽게 설명해드릴게요. 웹 개발을 처음 시작하거나, 기존 코드를 유지보수하다 보면 이 둘이 헷갈리기 쉽죠!
📌 MySQL과 MySQLi란?
- MySQL: PHP에서 MySQL 데이터베이스와 연결할 때 사용하던 오래된 함수형 API
- MySQLi (MySQL Improved): MySQL의 기능을 향상시킨 최신 확장 모듈로, 절차형 + 객체지향 방식 지원
※ PHP 7.0 이상에서는 MySQL 함수는 더 이상 사용되지 않으며, MySQLi나 PDO를 사용해야 합니다.
✅ MySQL과 MySQLi 차이점 표로 보기
구분 | MySQL | MySQLi |
---|---|---|
지원방식 | 절차형 | 절차형 & 객체지향 |
지원여부 | PHP 7부터 지원 중단 | PHP 7 이상 지원 |
보안 | 취약 | Prepared Statement 지원 (SQL Injection 방지) |
멀티쿼리 | 미지원 | 지원 |
트랜잭션 | 미지원 | 지원 |
✅ 사용 예제 비교
① MySQL 예제 (구버전, 이제 사용 X)
<?php
$conn = mysql_connect("localhost", "user", "password");
mysql_select_db("testdb", $conn);
$result = mysql_query("SELECT * FROM members");
while($row = mysql_fetch_assoc($result)) {
echo $row['name'];
}
mysql_close($conn);
?>
② MySQLi 절차형 예제
<?php
$conn = mysqli_connect("localhost", "user", "password", "testdb");
$result = mysqli_query($conn, "SELECT * FROM members");
while($row = mysqli_fetch_assoc($result)) {
echo $row['name'];
}
mysqli_close($conn);
?>
③ MySQLi 객체지향 예제
<?php
$conn = new mysqli("localhost", "user", "password", "testdb");
$result = $conn->query("SELECT * FROM members");
while($row = $result->fetch_assoc()) {
echo $row['name'];
}
$conn->close();
?>
📌 마무리
정리하자면 MySQL 함수는 더 이상 사용하지 않고, MySQLi 또는 PDO로 개발하는 것이 표준입니다.
특히 보안성과 유지보수를 위해 MySQLi의 Prepared Statement를 활용하는 걸 추천드려요!
구독과 댓글도 부탁드려요!
#PHP #MySQL #MySQLi #DB연동 #웹개발팁 #PHP7