로그인 | 관리자

개발 기록과 실무 자료를 빠르게 찾아보세요.

WEB DEVELOPMENT ARCHIVE

PHP

PHP, MySQL, 서버 운영과 실무 개발 기록입니다.

목록

PHP 8.4에서 MySQL 데이터베이스 연결하기 ? mysql_connect()에서 mysqli_connect()로 변경

웹마당넷 2026-11-12 05:06:56 7

PHP 8.4에서 MySQL 데이터베이스 연결하기 ? mysql_connect()에서 mysqli_connect()로 변경


PHP 5.x 환경에서 개발하던 웹사이트를 PHP 8.4로 이전하거나, PHP 8.4를 이용해 새로운 웹사이트를 개발하려면 기존 데이터베이스 연결 방식부터 확인해야 합니다.


이번 글에서는 PHP 5.5에서 사용하던 mysql_connect() 를 PHP 8.4의 mysqli_connect()로 변경하는 방법을 알아보겠습니다.


AI를 활용하면 프로그래밍 코드를 작성하지 않고도 웹사이트를 개발할 수 있습니다 하지만 AI로 PHP 개발 방법은 AI활용에서 별도로 다루기로 하고 이번 글은 기존 PHP 레거시 개발자를 대상으로 설명하겠습니다.


1. PHP 5.5에서 사용하던 데이터베이스 연결 방식


기존 PHP 5.5에서는 다음과 같이 MySQL 데이터베이스에 연결할 수 있었습니다.


<?php

$conn = mysql_connect("localhost", "root", "password");

mysql_select_db("netboard", $conn);

mysql_query("SET NAMES utf8");

?>


코드를 살펴보면 다음과 같습니다.

- mysql_connect() : MySQL 서버에 연결합니다.

- mysql_select_db() : 사용할 데이터베이스를 선택합니다.

- SET NAMES utf8 : 데이터베이스 연결 문자셋을 설정합니다.

오랫동안 PHP를 개발해 온 분들에게는 익숙한 코드일 것입니다.

그러나 PHP 7.0부터 기존 mysql_* 함수가 완전히 제거되었기 때문에 PHP 8.4에서는 이 코드를 그대로 사용할 수 없습니다.


2. PHP 8.4에서 데이터베이스 연결하기


PHP 8.4에서는 mysqli_connect()를 사용하면 됩니다.


<?php

$conn = mysqli_connect(

"localhost",

"root",

"password",

"netboard"

);

mysqli_set_charset($conn, "utf8mb4");

?>


기존 코드와 비교해 보면 크게 달라진 부분은 없습니다.

mysqli_connect()에서 데이터베이스 이름까지 한 번에 지정할 수 있으며, 문자셋은 mysqli_set_charset()으로 설정합니다.


참고로 mysqli는 PHP 8.4에서 새로 등장한 기능이 아닙니다. PHP 5.x에서도 사용할 수 있었지만, 기존 mysql_* 함수를 사용하던 개발자라면 변경이 필요합니다.


3. PHP 5.5와 PHP 8.4의 차이점

| PHP 5.5 레거시 방식 | PHP 8.4 방식 |

|---|---|

| mysql_connect() | mysqli_connect() |

| mysql_select_db() | mysqli_select_db() 또는 연결 시 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() |

기존 mysql_* 함수 대부분은 mysqli_* 함수로 대응할 수 있습니다.

여기서 주의할 점이 있습니다.


함수 이름만 변경하면 되는 것은 아닙니다.


일부 함수는 전달하는 인자의 순서나 사용 방식이 달라졌습니다.


4. SQL 쿼리 실행 방법 비교


PHP 5.5에서 다음과 같이 SQL 쿼리를 실행했다고 가정하겠습니다.


<?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()를 호출할 때 데이터베이스 연결 객체인 $conn을 첫 번째 인자로 전달한다는 것입니다.

기존의 mysql_query()는 연결 인자를 생략할 수 있었지만, mysqli_query()에서는 연결 객체를 명시해야 합니다.

조회 결과를 가져오는 `mysqli_fetch_assoc()`의 사용 방법은 기존과 거의 동일합니다.


5. PHP 8.4에서 데이터베이스 연결 오류 처리


PHP 8.1부터는 mysqli의 오류 처리 기본 방식이 변경되었습니다.


기존에는 데이터베이스 연결이나 쿼리 실행에 실패하면 false를 반환하는 방식으로 처리하는 경우가 많았습니다.


PHP 8.4에서는 기본적으로 데이터베이스 오류가 발생하면 mysqli_sql_exception 예외가 발생합니다.

다음과 같이 `try`, `catch`를 이용해 처리할 수 있습니다.


<?php

try {

$conn = mysqli_connect(

"localhost",

"dbuser",

"dbpassword",

"netboard"

);

mysqli_set_charset($conn, "utf8mb4");

} catch (mysqli_sql_exception $e) {

error_log($e->getMessage());

exit("데이터베이스 연결 오류");

}

?>


try 블록에서 데이터베이스 연결을 시도하고, 연결 오류가 발생하면 catch 블록에서 처리합니다.

error_log()를 이용해 실제 오류 내용을 서버 로그에 기록하고, 사용자에게는 간단한 오류 메시지만 출력합니다.


6. 절차형 방식과 객체지향 방식


PHP 8.4에서도 기존에 익숙한 절차형 방식으로 개발할 수 있습니다.


절차형 방식


$conn = mysqli_connect(

"localhost",

"dbuser",

"dbpassword",

"netboard"

);


객체지향 방식


$conn = new mysqli(

"localhost",

"dbuser",

"dbpassword",

"netboard"

);


두 방식 모두 PHP 8.4에서 정상적으로 사용할 수 있습니다.

PHP 버전을 업그레이드한다고 해서 반드시 객체지향 방식으로 모든 코드를 변경할 필요는 없습니다.

기존에 사용하던 절차형 방식 그대로 개발해도 됩니다.


마무리


PHP 5.5에서 PHP 8.4로 넘어간다고 해서 데이터베이스 연결 방법이 완전히 달라지는 것은 아닙니다.

기존 mysql_connect()를 mysqli_connect()로 변경하고, 데이터베이스 선택과 문자셋 설정 방법을 수정하면 됩니다.

SQL 쿼리 실행이나 결과를 가져오는 방법도 기존과 상당히 유사합니다.


기억해야 할 핵심은 세 가지입니다.

1. PHP 7.0부터 mysql_* 함수는 사용할 수 없습니다.

2. PHP 8.4에서는 mysqli_* 함수로 변경하고, 연결 객체를 전달해야 합니다.

3. PHP 8.1부터 변경된 데이터베이스 오류 처리 방식도 확인해야 합니다.

기존 PHP 레거시 개발자라면 이러한 차이점만 이해해도 PHP 8.4 환경에 어렵지 않게 적응할 수 있을 것입니다.

이번 글에서는 가장 기본적인 MySQL 데이터베이스 연결 방법을 알아보았습니다.

다음에는 어떤 글을 올릴 지는 장담할 수 없지만 유용한 정보를 올릴 수 있게 노력하겠습니다.

댓글 0

등록된 댓글이 없습니다.
댓글 작성 타인을 비방하거나 광고성 내용을 등록하지 마세요.
WEB DEVELOPMENT ARCHIVE

PHP

PHP, MySQL, 서버 운영과 실무 개발 기록입니다.

글쓰기
전체 82건
번호
제목
작성자
작성일
조회