PHP

PHP로 MySQL 데이터베이스 연동하기

thebasics 2024. 8. 29. 10:00

목차
1. MySQLi와 PDO 사용법
   - MySQLi란?
   - PDO란?
   - MySQLi와 PDO의 차이점
2. 기본적인 CRUD 예제 (Create, Read, Update, Delete)
   - 데이터베이스 연결
   - 데이터 생성 (Create)
   - 데이터 조회 (Read)
   - 데이터 업데이트 (Update)
   - 데이터 삭제 (Delete)
3. 코드 예제
4. 결론 및 추가 학습 자료


1. MySQLi와 PDO 사용법

PHP에서 MySQL 데이터베이스와 상호작용하는 두 가지 주요 방법이 있습니다: MySQLi와 PDO입니다. 각각의 방법은 MySQL 데이터베이스에 연결하고 쿼리를 실행하는 데 사용됩니다.

MySQLi란?

MySQLi는 "MySQL Improved"의 약자로, MySQL 데이터베이스와의 상호작용을 위한 PHP의 내장 확장 기능입니다. MySQLi는 절차적(procedural) 스타일과 객체 지향(object-oriented) 스타일 모두를 지원하며, 데이터베이스 연결, 쿼리 실행, 결과 처리 등을 수행할 수 있습니다.

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("연결 실패: " . $mysqli->connect_error);
}

echo "MySQLi 연결 성공!";
?>

PDO란?

PDO(Php Data Objects)는 PHP에서 다양한 데이터베이스에 접근할 수 있도록 해주는 확장 기능입니다. PDO는 MySQL뿐만 아니라 다른 데이터베이스 시스템도 지원하며, 객체 지향 방식으로 사용됩니다.

<?php
try {
    $pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "PDO 연결 성공!";
} catch (PDOException $e) {
    die("연결 실패: " . $e->getMessage());
}
?>

MySQLi와 PDO의 차이점

- 지원되는 데이터베이스: MySQLi는 MySQL 전용이지만, PDO는 다양한 데이터베이스 시스템을 지원합니다.
- 유연성: PDO는 여러 데이터베이스 시스템을 지원하기 때문에, 코드 이식성이 높습니다.
- 객체 지향: PDO는 완전히 객체 지향 방식이지만, MySQLi는 절차적 스타일도 지원합니다.


2. 기본적인 CRUD 예제 (Create, Read, Update, Delete)

CRUD는 데이터베이스 작업의 기본적인 네 가지 기능을 나타냅니다: 생성(Create), 조회(Read), 업데이트(Update), 삭제(Delete). 여기서는 MySQLi와 PDO를 사용한 간단한 CRUD 작업을 살펴보겠습니다.

데이터베이스 연결

MySQLi로 연결:

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("연결 실패: " . $mysqli->connect_error);
}
?>

PDO로 연결:

<?php
try {
    $pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("연결 실패: " . $e->getMessage());
}
?>

데이터 생성 (Create)

MySQLi로 데이터 삽입:

<?php
$sql = "INSERT INTO users (username, email) VALUES ('LearnCode', 'Learn@example.com')";
if ($mysqli->query($sql) === TRUE) {
    echo "새로운 레코드가 성공적으로 생성되었습니다.";
} else {
    echo "오류: " . $sql . "<br>" . $mysqli->error;
}
?>

PDO로 데이터 삽입:

<?php
$sql = "INSERT INTO users (username, email) VALUES (:username, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['username' => 'LearnCode', 'email' => 'Learn@example.com']);
echo "새로운 레코드가 성공적으로 생성되었습니다.";
?>

데이터 조회 (Read)

MySQLi로 데이터 조회:

<?php
$sql = "SELECT id, username, email FROM users";
$result = $mysqli->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - 이름: " . $row["username"]. " - 이메일: " . $row["email"]. "<br>";
    }
} else {
    echo "결과가 없습니다.";
}
?>

PDO로 데이터 조회:

<?php
$sql = "SELECT id, username, email FROM users";
$stmt = $pdo->query($sql);

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "ID: " . $row["id"]. " - 이름: " . $row["username"]. " - 이메일: " . $row["email"]. "<br>";
}
?>

데이터 업데이트 (Update)

MySQLi로 데이터 업데이트:

<?php
$sql = "UPDATE users SET email='newemail@example.com' WHERE id=1";

if ($mysqli->query($sql) === TRUE) {
    echo "레코드가 성공적으로 업데이트되었습니다.";
} else {
    echo "오류: " . $mysqli->error;
}
?>

PDO로 데이터 업데이트:

<?php
$sql = "UPDATE users SET email=:email WHERE id=:id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['email' => 'newemail@example.com', 'id' => 1]);
echo "레코드가 성공적으로 업데이트되었습니다.";
?>

데이터 삭제 (Delete)

MySQLi로 데이터 삭제:

<?php
$sql = "DELETE FROM users WHERE id=1";

if ($mysqli->query($sql) === TRUE) {
    echo "레코드가 성공적으로 삭제되었습니다.";
} else {
    echo "오류: " . $mysqli->error;
}
?>

PDO로 데이터 삭제:

<?php
$sql = "DELETE FROM users WHERE id=:id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => 1]);
echo "레코드가 성공적으로 삭제되었습니다.";
?>

3. 코드 예제

MySQLi와 PDO를 사용한 CRUD 예제를 종합적으로 작성해보겠습니다.

<?php
// PDO를 사용한 예제
try {
    $pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 데이터 생성 (Create)
    $sql = "INSERT INTO users (username, email) VALUES (:username, :email)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute(['username' => 'JohnDoe', 'email' => 'john@example.com']);
    echo "새로운 레코드가 생성되었습니다.<br>";

    // 데이터 조회 (Read)
    $sql = "SELECT id, username, email FROM users";
    $stmt = $pdo->query($sql);
    echo "사용자 목록:<br>";
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "ID: " . $row["id"]. " - 이름: " . $row["username"]. " - 이메일: " . $row["email"]. "<br>";
    }

    // 데이터 업데이트 (Update)
    $sql = "UPDATE users SET email=:email WHERE id=:id";
    $stmt = $pdo->prepare($sql);
    $stmt->execute(['email' => 'john_new@example.com', 'id' => 1]);
    echo "레코드가 업데이트되었습니다.<br>";

    // 데이터 삭제 (Delete)
    $sql = "DELETE FROM users WHERE id=:id";
    $stmt = $pdo->prepare($sql);
    $stmt->execute(['id' => 1]);
    echo "레코드가 삭제되었습니다.<br>";

} catch (PDOException $e) {
    die("연결 실패: " . $e->getMessage());
}
?>

코드 분석:
- 이 예제에서는 PDO를 사용하여 MySQL 데이터베이스와 상호작용합니다.
- 데이터 생성(Create), 조회(Read), 업데이트(Update), 삭제(Delete) 작업을 순차적으로 수행하며, 각 작업의 결과를 출력합니다.


4. 결론 및 추가 학습 자료

이번 글에서는 PHP에서 MySQL 데이터베이스를 연동하는 방법에 대해 알아보았습니다. MySQLi와 PDO를 사용하여 데이터베이스에 연결하고, 기본적인 CRUD 작업을 수행하는 방법을 다루었습니다. 데이터베이스 연동은 웹 애플리케이션 개발에서 필수적인 기술이며, 이를 통해 동적인 데이터를 관리하고 처리할 수 있습니다.

추가 학습 자료:
- [PHP 공식 문서 - MySQLi](https://www.php.net/manual/en/book.mysqli.php) MySQLi 사용법에 대한 공식 문서입니다.
- [PHP 공식 문서 - PDO](https://www.php.net/manual/en/book.pdo.php) PDO 사용법에 대한 공식 문서입니다.
- [W3Schools MySQLi 튜토리얼](https://www.w3schools.com/php/php_mysql_intro.asp) MySQLi를 사용한 PHP와 MySQL의 연동 방법을 다루는 튜토리얼입니다.
- [W3Schools PDO 튜토리얼](https://www.w3schools.com/php/php_mysql_pdo.asp) PDO를 사용한 PHP와 MySQL의 연동 방법을 다루는 튜토리얼입니다.


이제 PHP와 MySQL을 연동하는 기본 개념을 이해했으니, 이를 바탕으로 복잡한 데이터베이스 애플리케이션을 개발해보세요. 지속적인 학습을 통해 PHP와 MySQL의 모든 가능성을 탐구해보시길 바랍니다!

반응형

'PHP' 카테고리의 다른 글

PHP로 파일 읽기 및 쓰기  (0) 2024.08.31
PHP로 폼 데이터 처리 및 유효성 검사하기  (2) 2024.08.30
PHP 슈퍼글로벌 변수 이해하기  (0) 2024.08.28
PHP 배열 다루기  (2) 2024.08.27
PHP 함수 작성 및 사용하기  (0) 2024.08.26