IT
PHP MySQL 확장(MySQL Extension)
1. MySQL 확장이란
-
PHP 4와 PHP 5 초반까지 MySQL 서버와 통신하기 위해 제공된 C 기반 API.
-
단순하고 배우기 쉬웠지만, 보안과 기능이 부족했습니다.
-
대표 함수:
mysql_connect(), mysql_select_db(), mysql_query(), mysql_fetch_array() 등
2. MySQL 확장의 주요 함수
함수
설명
mysql_connect()
MySQL 서버에 연결
mysql_select_db()
데이터베이스 선택
mysql_query()
SQL 쿼리 실행
mysql_fetch_array()
결과를 배열로 반환
mysql_fetch_assoc()
연관 배열로 반환
mysql_num_rows()
결과 행 개수 반환
mysql_close()
연결 종료
3. 사용 예제 (구버전 방식)
<?php
// MySQL 연결
$conn = mysql_connect("localhost", "root", "비밀번호");
if (!$conn) {
die("DB 연결 실패: " . mysql_error());
}
// 데이터베이스 선택
mysql_select_db("testdb", $conn);
// 쿼리 실행
$result = mysql_query("SELECT id, name FROM users");
while ($row = mysql_fetch_assoc($result)) {
echo "ID: " . $row['id'] . " 이름: " . $row['name'] . "<br>";
}
// 연결 종료
mysql_close($conn);
?>
4. MySQL 확장의 문제점
-
보안 취약점
-
Prepared Statement 미지원 → SQL 인젝션에 취약
-
유니코드/UTF-8 지원 부족
-
문자셋 설정 불편, 멀티바이트 문자 처리 문제
-
기능 부족
-
트랜잭션, 스토어드 프로시저 등 최신 DB 기능 미흡
-
확장성 부족
-
MySQL 전용으로, 다른 DBMS로의 변경 불가능
-
유지보수 중단
-
PHP 5.5에서 사용 중단(Deprecated)
-
PHP 7.0에서 완전 제거
5. 대체 기술
MySQL 확장을 더 이상 사용할 수 없으므로, 아래 중 하나를 사용해야 합니다.
1) MySQLi (MySQL Improved)
-
MySQL 전용
-
절차지향 + 객체지향 지원
-
Prepared Statement 지원
-
최신 MySQL 기능 지원
예:
$conn = new mysqli("localhost", "root", "비밀번호", "testdb");
$stmt = $conn->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
2) PDO (PHP Data Objects)
-
다양한 DBMS 지원 (MySQL, PostgreSQL, SQLite 등)
-
객체지향 기반
-
Prepared Statement 지원
-
DB 변경 시 코드 수정 최소화
예:
$pdo = new PDO("mysql:host=localhost;dbname=testdb;charset=utf8", "root", "비밀번호");
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute([':id' => 1]);
6. MySQL 확장과 MySQLi/PDO 비교
기능
MySQL 확장
MySQLi
PDO
DB 지원
MySQL 전용
MySQL 전용
다중 DB 지원
Prepared Statement
X
O
O
객체지향 지원
X
O
O
트랜잭션
X
O
O
PHP 7 이상 지원
X
O
O
7. 결론
-
mysql_* 함수는 더 이상 사용할 수 없으며, MySQLi 또는 PDO로 반드시 전환해야 합니다.
-
새로운 프로젝트는 보안과 확장성을 위해 PDO 또는 MySQLi(객체지향) 사용을 권장합니다.
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.