백엔드 개발 일지에 오신 것을 환영합니다! 오늘은 PHP와 MySQL을 사용하여 간단한 블로그 시스템을 구축하는 방법을 단계별로 알아보겠습니다. 이 튜토리얼을 통해 기본적인 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하고 구현할 수 있습니다.

1. 개발 환경 설정

우선, PHP와 MySQL을 사용할 수 있는 개발 환경을 설정해야 합니다. 로컬 서버 환경을 구축하기 위해 XAMPP 또는 MAMP를 설치하세요. 이 도구들은 Apache 서버와 MySQL 데이터베이스, PHP를 통합적으로 제공합니다.

설치가 완료되면, 웹 브라우저에서 http://localhost/phpmyadmin에 접속하여 데이터베이스를 생성합니다. 데이터베이스 이름은 blog로 설정하겠습니다.

2. 데이터베이스 테이블 생성

블로그 시스템에서는 포스트를 저장할 테이블이 필요합니다. 아래 SQL 쿼리를 사용하여 posts 테이블을 생성합니다.

CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

이 쿼리는 포스트의 제목, 내용, 생성 시간을 저장할 수 있는 테이블을 만듭니다.

3. PHP 파일 구조 설정

프로젝트 구조를 아래와 같이 설정합니다.

/blog
    ├── index.php
    ├── create.php
    ├── edit.php
    ├── delete.php
    └── db.php

이제 각 파일의 기능을 살펴보겠습니다.

4. 데이터베이스 연결 (db.php)

데이터베이스와 연결하기 위한 db.php 파일을 작성합니다.

<?php
$host = 'localhost';
$username = 'root'; // 사용자 이름
$password = ''; // 비밀번호
$dbname = 'blog'; // 데이터베이스 이름

$conn = new mysqli($host, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

5. 블로그 포스트 목록 조회 (index.php)

index.php 파일에서는 블로그 포스트 목록을 조회하고 화면에 출력합니다.
<?php
include 'db.php';

$sql = "SELECT * FROM posts ORDER BY created_at DESC";
$result = $conn->query($sql);
?>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>블로그 목록</title>
</head>
<body>
    <h1>블로그 포스트</h1>
    <a href="create.php">새 포스트 작성</a>
    <ul>
        <?php while($row = $result->fetch_assoc()) : ?>
            <li>
                <h2><?php echo $row['title']; ?></h2>
                <p><?php echo $row['content']; ?></p>
                <a href="edit.php?id=<?php echo $row['id']; ?>">수정</a>
                <a href="delete.php?id=<?php echo $row['id']; ?>">삭제</a>
            </li>
        <?php endwhile; ?>
    </ul>
</body>
</html>

6. 블로그 포스트 작성 (create.php)

사용자가 새로운 포스트를 작성할 수 있는 create.php 파일입니다.

<?php
include 'db.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $title = $_POST['title'];
    $content = $_POST['content'];

    $sql = "INSERT INTO posts (title, content) VALUES ('$title', '$content')";
    $conn->query($sql);
    header('Location: index.php');
}
?>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>포스트 작성</title>
</head>
<body>
    <h1>새 포스트 작성</h1>
    <form method="POST">
        <input type="text" name="title" placeholder="제목" required>
        <textarea name="content" placeholder="내용" required></textarea>
        <button type="submit">작성</button>
    </form>
</body>
</html>

7. 블로그 포스트 수정 (edit.php)

edit.php 파일을 통해 사용자가 기존 포스트를 수정할 수 있습니다.
<?php
include 'db.php';

$id = $_GET['id'];
$sql = "SELECT * FROM posts WHERE id=$id";
$result = $conn->query($sql);
$post = $result->fetch_assoc();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $title = $_POST['title'];
    $content = $_POST['content'];

    $sql = "UPDATE posts SET title='$title', content='$content' WHERE id=$id";
    $conn->query($sql);
    header('Location: index.php');
}
?>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>포스트 수정</title>
</head>
<body>
    <h1>포스트 수정</h1>
    <form method="POST">
        <input type="text" name="title" value="<?php echo $post['title']; ?>" required>
        <textarea name="content" required><?php echo $post['content']; ?></textarea>
        <button type="submit">수정</button>
    </form>
</body>
</html>

8. 블로그 포스트 삭제 (delete.php)

마지막으로, 포스트를 삭제하는 delete.php 파일입니다.

<?php
include 'db.php';

$id = $_GET['id'];
$sql = "DELETE FROM posts WHERE id=$id";
$conn->query($sql);
header('Location: index.php');
?>

## 마무리

이로써 PHP와 MySQL을 이용한 간단한 블로그 시스템 구축이 완료되었습니다. 이 튜토리얼을 통해 기본적인 CRUD 기능을 구현하는 방법을 배웠습니다. 추가적으로 사용자 인증, 댓글 기능, 태그 기능 등을 추가하여 기능을 확장할 수 있습니다. 더 나아가 프레임워크를 사용하여 보다 구조적이고 유지보수가 용이한 코드를 작성하는 방향으로 나아가보세요!