본문 바로가기

Spring Boot

[PHP] php api 구현 PDO를 사용하여 PHP에서 데이터베이스 작업(GET, POST, PUT, DELETE)을 통합하는 방법

반응형

PDO 클래스를 사용하여 MySQL 데이터베이스에 대한 연결을 설정하고 table_name 테이블에 대한 기본 GET, POST, PUT 및 DELETE 요청을 구현합니다. 보안상의 이유로 SQL 주입 공격을 방지하기 위해 데이터베이스를 사용할 때는 항상 준비된 문과 매개 변수화된 쿼리를 사용해야 합니다.

<?php

// Connect to database
$dsn = "mysql:host=localhost;dbname=testdb";
$username = "user";
$password = "password";

try {
    $db = new PDO($dsn, $username, $password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
    exit;
}

// Handle GET request
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    // Get query parameters
    $id = $_GET['id'];
    
    // Get data from database
    $stmt = $db->prepare("SELECT * FROM table_name WHERE id = ?");
    $stmt->execute([$id]);
    $data = $stmt->fetch(PDO::FETCH_ASSOC);
    
    // Return response
    echo json_encode($data);
}

// Handle POST request
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Get post data
    $data = json_decode(file_get_contents('php://input'), true);
    
    // Insert data into database
    $stmt = $db->prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
    $stmt->execute([$data['column1'], $data['column2']]);
    
    // Return response
    echo json_encode(['message' => 'Data inserted']);
}

// Handle PUT request
if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
    // Get put data
    $data = json_decode(file_get_contents('php://input'), true);
    
    // Update data in database
    $stmt = $db->prepare("UPDATE table_name SET column1 = ?, column2 = ? WHERE id = ?");
    $stmt->execute([$data['column1'], $data['column2'], $data['id']]);
    
    // Return response
    echo json_encode(['message' => 'Data updated']);
}

// Handle DELETE request
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
    // Get query parameters
    $id = $_GET['id'];
    
    // Delete data from database
    $stmt = $db->prepare("DELETE FROM table_name WHERE id = ?");
    $stmt->execute([$id]);
    
    // Return response
    echo json_encode(['message' => 'Data deleted']);
}
반응형