PHP 8.4에서 MySQL 데이터베이스 연결하기 ? mysql_connect()에서 mysqli_connect()로 변경
PHP 8.4에서 MySQL 데이터베이스 연결하기 ? mysql_connect()에서 mysqli_connect()로 변경
PHP 5.x 환경에서 개발한 웹사이트를 PHP 8.4로 이전하려면 기존 MySQL 데이터베이스 연결 코드를 확인해야 합니다.
기존 mysql_* 함수는 PHP 5.5에서 사용 중단이 권고되었으며 PHP 7.0부터 완전히 제거되었습니다.
AI를 활용하면 프로그래밍 코드를 직접 작성하지 않고도 웹사이트를 개발할 수 있습니다. 그러나 AI를 활용한 PHP 개발 방법은 "AI 활용"에서 별도로 다루기로 하고 이번 글은 기존 PHP 레거시 개발자를 대상으로 하겠습니다.
1. MySQL 데이터베이스 연결 방법 변경
기존 PHP 5.5 코드
<?php
$conn = mysql_connect("localhost", "dbuser", "dbpassword");
mysql_select_db("netboard", $conn);
mysql_query("SET NAMES utf8");
?>
PHP 8.4 코드
<?php
$conn = mysqli_connect("localhost", "dbuser", "dbpassword", "netboard");
mysqli_set_charset($conn, "utf8mb4");
?>
mysqli_connect()에서는 데이터베이스 이름까지 한 번에 지정할 수 있으며 문자셋은 mysqli_set_charset() 으로 설정합니다.
참고로 mysqli_* 함수는 PHP 5.0부터 지원되었으므로 PHP 8.4에서 새로 등장한 기능은 아닙니다.
2. 기존 mysql_* 함수와 mysqli_* 함수 비교
기존 함수 → 변경 함수
- mysql_connect() → mysqli_connect()
- mysql_select_db() → mysqli_select_db()
- mysql_query() → mysqli_query()
- mysql_fetch_assoc() → mysqli_fetch_assoc()
- mysql_num_rows() → mysqli_num_rows()
- mysql_real_escape_string() → mysqli_real_escape_string()
- mysql_close() → mysqli_close()
함수 이름만 변경하는 것이 아니라 연결 인자의 전달 방식과 순서도 당근 확인해야 합니다.
3. SQL 쿼리 실행 방법 변경
기존 PHP 5.5 코드
<?php
$result = mysql_query("SELECT * FROM board");
while ($row = mysql_fetch_assoc($result)) {
echo $row['subject'];
}
?>
PHP 8.4 코드
<?php
$result = mysqli_query($conn, "SELECT * FROM board");
while ($row = mysqli_fetch_assoc($result)) {
echo $row['subject'];
}
?>
mysqli_query()는 기존 mysql_query()와 달리 데이터베이스 연결 객체인 $conn을 첫 번째 인자로 전달해야 합니다.
4. PHP 8.4에서 MySQL 오류 처리
PHP 8.1부터 MySQLi의 기본 오류 처리 방식이 변경되어 데이터베이스 오류가 발생하면 mysqli_sql_exception 예외가 발생합니다.
<?php
try {
$conn = mysqli_connect(
"localhost", "dbuser", "dbpassword", "netboard"
);
mysqli_set_charset($conn, "utf8mb4");
} catch (mysqli_sql_exception $e) {
error_log($e->getMessage());
exit("데이터베이스 연결 오류");
}
?>
기존 PHP 5.x에서 false 반환값을 확인하는 방식으로 오류를 처리했다면 이 부분도 확인해야 합니다.
마무리
PHP 7.0부터 기존 mysql_* 함수가 제거되었으므로 mysqli_* 또는 PDO를 사용해야 합니다.
기존 절차형 방식도 PHP 8.4에서 그대로 사용할 수 있으므로 반드시 객체지향 방식으로 변경할 필요는 없습니다.
이번 글에서는 PHP 8.4에서 MySQL 데이터베이스를 연결하는 방법과 기존 코드의 주요 변경 사항을 살펴보았습니다.
앞으로도 PHP 개발에 도움이 되는 실무 정보를 소개하겠습니다.

웹마당넷
오렌지
댓글 0