IMCAT.DEV
로그인 가입
PHP 중급 데이터베이스

PHP 파일 및 데이터베이스 I/O

PHP 파일 및 데이터베이스 I/O — 중급

파일 및 데이터베이스 I/O

1. 도입 (왜 배워야 하는가)

파일 및 데이터베이스 I/O(Input/Output)는 웹 애플리케이션에서 데이터의 저장과 관리를 담당하는 핵심 기술입니다. 실무에서는 사용자 데이터, 로그 파일, 설정 값 등을 파일이나 데이터베이스에 저장하고 불러오는 작업이 빈번하게 발생합니다. 이 과정을 이해하지 못하면 데이터의 영속성을 보장할 수 없으며, 애플리케이션의 기능이 제한되고, 사용자 경험이 나빠질 수 있습니다. 예를 들어, 쇼핑몰 웹사이트에서 사용자가 장바구니에 담은 상품이 서버를 재시작하면 사라진다면 사용자는 큰 불편을 겪게 됩니다.

2. 핵심 개념 설명

파일 I/O

파일 I/O는 데이터를 파일에 저장하거나 파일로부터 읽어오는 작업을 의미합니다. 예를 들어, 일기장에 글을 쓰고 읽는 것과 비슷합니다. 일기를 쓰는 것은 데이터를 파일에 저장하는 것이고, 일기를 읽는 것은 파일로부터 데이터를 읽어오는 것입니다.

데이터베이스 I/O

데이터베이스 I/O는 데이터를 데이터베이스에 저장하고 검색하는 과정입니다. 이는 마치 도서관에서 책을 빌리고 반납하는 과정과 유사합니다. 책을 빌리는 것은 데이터를 요청하는 것이고, 반납하는 것은 데이터를 저장하는 것입니다.

용어정의
파일 I/O파일을 통해 데이터를 읽고 쓰는 과정
데이터베이스 I/O데이터베이스를 통해 데이터를 읽고 쓰는 과정

3. 기본 코드 예제

파일 I/O 예제

아래는 PHP로 파일에 데이터를 쓰고 읽는 간단한 예제입니다.

// 파일에 데이터 쓰기
$file = 'sample.txt';
$data = "안녕하세요, PHP 파일 I/O입니다!";
file_put_contents($file, $data); // 파일에 데이터 저장

// 파일에서 데이터 읽기
$readData = file_get_contents($file); // 파일에서 데이터 읽기
echo $readData; // 읽은 데이터 출력
  • 실행 결과: 안녕하세요, PHP 파일 I/O입니다!
  • file_put_contents($file, $data);: 지정한 파일에 데이터를 저장합니다.
  • file_get_contents($file);: 파일에서 데이터를 읽어옵니다.
  • echo $readData;: 읽어온 데이터를 출력합니다.
  • 데이터베이스 I/O 예제

    아래는 MySQL 데이터베이스에 연결하여 데이터를 삽입하고 조회하는 예제입니다.

    // 데이터베이스 연결
    $host = 'localhost';
    $db = 'test_db';
    $user = 'root';
    $pass = '';
    
    $conn = new mysqli($host, $user, $pass, $db); // 데이터베이스 연결
    
    // 데이터 삽입
    $sqlInsert = "INSERT INTO users (name, email) VALUES ('홍길동', '[email protected]')";
    $conn->query($sqlInsert); // 데이터 삽입 실행
    
    // 데이터 조회
    $sqlSelect = "SELECT * FROM users";
    $result = $conn->query($sqlSelect); // 데이터 조회 실행
    
    while ($row = $result->fetch_assoc()) {
        echo $row['name'] . " - " . $row['email'] . "\n"; // 결과 출력
    }
    
    $conn->close(); // 연결 종료
  • 실행 결과: 홍길동 - [email protected]
  • new mysqli($host, $user, $pass, $db);: 데이터베이스에 연결합니다.
  • $conn->query($sqlInsert);: 데이터 삽입 쿼리를 실행합니다.
  • $conn->query($sqlSelect);: 데이터 조회 쿼리를 실행합니다.
  • fetch_assoc(): 조회된 데이터를 배열 형태로 가져옵니다.
  • 4. 실전 활용 예제

    쇼핑몰 장바구니 구현

    쇼핑몰에서 장바구니에 상품을 담고, 결제 시 데이터를 데이터베이스에 저장하는 경우입니다.

    // 장바구니에 상품 추가
    $productId = 1; // 상품 ID
    $userId = 10; // 사용자 ID
    
    $sqlInsert = "INSERT INTO cart (user_id, product_id) VALUES ($userId, $productId)";
    $conn->query($sqlInsert); // 데이터 삽입 실행

    사용자 프로필 저장

    사용자가 프로필 정보를 수정할 때 이를 데이터베이스에 업데이트하는 예제입니다.

    // 사용자 프로필 수정
    $newName = "김철수"; // 새로운 이름
    $userId = 10; // 사용자 ID
    
    $sqlUpdate = "UPDATE users SET name='$newName' WHERE id=$userId";
    $conn->query($sqlUpdate); // 데이터 수정 실행

    5. 흔한 실수와 주의사항

    1. 파일 경로 오류

    잘못된 파일 경로를 지정할 경우 데이터가 저장되지 않거나 읽어오지 못하는 오류가 발생할 수 있습니다.

    잘못된 코드

    $file = 'wrong_path/sample.txt'; // 잘못된 경로

    올바른 코드

    $file = 'sample.txt'; // 올바른 경로

    2. SQL 인젝션

    사용자가 입력한 데이터를 검증하지 않고 SQL 쿼리에 직접 사용하는 경우 보안 문제가 발생할 수 있습니다.

    잘못된 코드

    $sql = "SELECT * FROM users WHERE email = '$_POST[email]'"; // 사용자 입력 직접 사용

    올바른 코드

    $email = $conn->real_escape_string($_POST['email']); // 사용자 입력 검증
    $sql = "SELECT * FROM users WHERE email = '$email'";

    6. 정리

  • 파일 및 데이터베이스 I/O는 데이터 영속성을 보장하는 데 필수적입니다.
  • 파일 I/O는 데이터를 파일에 저장하고 읽는 과정이며, 데이터베이스 I/O는 데이터를 데이터베이스에 저장하고 검색하는 과정입니다.
  • SQL 인젝션과 파일 경로 오류는 자주 발생하는 실수이며, 이를 방지하기 위한 방법을 이해해야 합니다.
  • 다음에 학습하면 좋은 주제

  • PHP에서의 세션 관리
  • PDO를 이용한 데이터베이스 작업
  • JSON 파일을 이용한 데이터 처리