이전 글에서는 PHP를 사용해 기본적인 백엔드 환경을 설정하는 방법을 다뤘습니다. 이제는 본격적으로 데이터베이스와 연동하여 동적인 웹 애플리케이션을 개발하는 방법을 살펴보겠습니다.
1. 데이터베이스 선택 및 설정
PHP 백엔드 개발에서 가장 많이 사용하는 데이터베이스는 MySQL입니다. MySQL은 오픈소스이며 PHP와의 호환성이 뛰어나기 때문에 초보자와 전문가 모두에게 적합합니다.
MySQL 설치
- 로컬 개발 환경에서는 XAMPP와 같은 통합 패키지를 이용하면 MySQL이 기본적으로 포함되어 있습니다.
- 서버 환경에서는 다음 명령으로 설치할 수 있습니다.
sudo apt-get install mysql-server
데이터베이스 생성
- MySQL CLI에 접속합니다.
mysql -u root -p
2. 데이터베이스를 생성합니다.
CREATE DATABASE example_db;
3. 테이블을 생성합니다.
USE example_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
2. PHP와 MySQL 연동하기
PHP에서 데이터베이스와 통신하려면 PDO
또는 MySQLi
확장을 사용할 수 있습니다. 여기서는 더 현대적인 방법인 PDO
를 사용하겠습니다.
PDO를 사용한 연결 예제
<?php
// 데이터베이스 설정
$host = '127.0.0.1';
$db = 'example_db';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
echo "데이터베이스 연결 성공";
} catch (PDOException $e) {
throw new PDOException($e->getMessage(), (int)$e->getCode());
}
?>
3. 데이터 삽입 및 조회
데이터 삽입 사용자 데이터를 삽입하는 간단한 코드를 작성해보겠습니다.
<?php
$name = "홍길동";
$email = "hong@example.com";
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['name' => $name, 'email' => $email]);
echo "데이터 삽입 성공";
?>
데이터 조회 삽입된 데이터를 조회하는 코드입니다.
<?php
$sql = "SELECT * FROM users";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch()) {
echo $row['name'] . " - " . $row['email'] . "<br>";
}
?>
4. PHP 코드 구조화하기
실제 프로젝트에서는 코드의 재사용성을 높이기 위해 데이터베이스 관련 작업을 별도의 파일로 분리하는 것이 좋습니다.
db.php
<?php
function getPDO() {
$host = '127.0.0.1';
$db = 'example_db';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
return new PDO($dsn, $user, $pass, $options);
}
?>
main.php
<?php
require 'db.php';
$pdo = getPDO();
$sql = "SELECT * FROM users";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch()) {
echo $row['name'] . " - " . $row['email'] . "<br>";
}
?>
5. 다음 단계
- 폼과 PHP 연동하기: HTML 폼에서 입력한 데이터를 PHP로 전달하고 처리하는 방법을 배워보세요.
- 보안 강화: SQL 인젝션 방지, 비밀번호 해싱 등 보안에 대한 추가 학습을 진행하세요.
- MVC 구조 도입: 코드의 유지보수성과 확장성을 높이기 위해 MVC(Model-View-Controller) 구조를 도입해보세요.
다음 글에서는 PHP로 RESTful API를 구현하는 방법을 소개하겠습니다. 이 과정을 통해 실제 애플리케이션 개발에 더 가까이 다가갈 수 있습니다.