> 데이터 베이스 > MySQL 튜토리얼 > CRUD PHP, MySQL, API 및 중요한 기본 사항

CRUD PHP, MySQL, API 및 중요한 기본 사항

Barbara Streisand
풀어 주다: 2024-12-31 13:23:10
원래의
864명이 탐색했습니다.

CRUD PHP e MySQL e API e Fundamentos importantes

MySQL을 사용하여 PHP에서 CRUD(생성, 읽기, 업데이트, 삭제)를 만드는 방법입니다.

이 예에서는 MySQLi 확장을 사용하여 데이터베이스 작업을 수행합니다.

1단계: 데이터베이스 및 테이블 생성

다음 SQL 스크립트를 실행하여 데이터베이스와 users라는 테이블을 만듭니다.

CREATE DATABASE crud_example;
USE crud_example;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE
);
로그인 후 복사
로그인 후 복사

2단계: 데이터베이스 연결

데이터베이스 연결을 관리하기 위해 config.php 파일을 만듭니다.

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "crud_example";

// Conexão com o banco
$conn = new mysqli($servername, $username, $password, $dbname);

// Verifica conexão
if ($conn->connect_error) {
    die("Falha na conexão: " . $conn->connect_error);
}
?>
로그인 후 복사

3단계: 홈 페이지

index.php 파일을 만들어 사용자 목록을 작성하고 생성, 편집, 삭제 기능을 추가하세요.

<?php
include 'config.php';

// Leitura dos dados
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CRUD em PHP</title>
</head>
<body>
    <h1>Lista de Usuários</h1>
    <a href="create.php">Adicionar Novo Usuário</a>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Nome</th>
            <th>Email</th>
            <th>Ações</th>
        </tr>
        <?php while ($row = $result->fetch_assoc()) { ?>
            <tr>
                <td><?= $row['id'] ?></td>
                <td><?= $row['name'] ?></td>
                <td><?= $row['email'] ?></td>
                <td>
                    <a href="edit.php?id=<?= $row['id'] ?>">Editar</a>
                    <a href="delete.php?id=<?= $row['id'] ?>" onclick="return confirm('Tem certeza que deseja excluir?')">Excluir</a>
                </td>
            </tr>
        <?php } ?>
    </table>
</body>
</html>
로그인 후 복사

4단계: 사용자 생성

새 사용자를 추가하려면 create.php 파일을 생성하세요.

<?php
include 'config.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];

    $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
    if ($conn->query($sql) === TRUE) {
        header("Location: index.php");
        exit;
    } else {
        echo "Erro: " . $conn->error;
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Criar Usuário</title>
</head>
<body>
    <h1>Adicionar Novo Usuário</h1>
    <form method="POST">
        <label for="name">Nome:</label>
        <input type="text">




<hr>

<h3>
  
  
  Passo 5: Editar Usuário
</h3>

<p>Crie um arquivo edit.php para editar um usuário existente:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
include 'config.php';

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

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];

    $sql = "UPDATE users SET name='$name', email='$email' WHERE>




<hr>

<h3>
  
  
  Passo 6: Excluir Usuário
</h3>

<p>Crie um arquivo delete.php para excluir um usuário:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
include 'config.php';

$id = $_GET['id'];
$sql = "DELETE FROM users WHERE>




<hr>

<h3>
  
  
  Como Rodar o Projeto
</h3>

<ol>
<li>Configure o servidor local (como XAMPP ou LAMP).</li>
<li>Coloque todos os arquivos em uma pasta dentro do diretório público (htdocs ou equivalente).</li>
<li>Acesse http://localhost/sua_pasta/index.php no navegador.</li>
</ol>

<p>Esse é um CRUD básico e pode ser melhorado com validações, segurança (como SQL Injection), e estruturação MVC.</p>


<hr>

<h2>
  
  
  CRUD usando PHP e MySQL, estruturado de forma <strong>orientada a objetos (OOP)</strong>
</h2>

<p>A abordagem inclui uma classe para gerenciar as operações do banco de dados e separação lógica.</p>


<hr>

<h3>
  
  
  Passo 1: Configuração da Conexão com o Banco
</h3>

<p>Crie um arquivo Database.php para encapsular a conexão com o banco:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
class Database {
    private $host = "localhost";
    private $user = "root";
    private $pass = "";
    private $dbname = "crud_example";
    public $conn;

    public function __construct() {
        $this->conn = new mysqli($this->host, $this->user, $this->pass, $this->dbname);

        if ($this->conn->connect_error) {
            die("Erro na conexão: " . $this->conn->connect_error);
        }
    }
}
?>
로그인 후 복사

2단계: 은행업무 수업

CRUD 작업을 관리하기 위해 User.php 파일을 만듭니다.

<?php
include 'Database.php';

class User {
    private $db;

    public function __construct() {
        $this->db = (new Database())->conn;
    }

    // Create
    public function create($name, $email) {
        $stmt = $this->db->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
        $stmt->bind_param("ss", $name, $email);
        return $stmt->execute();
    }

    // Read
    public function getAll() {
        $result = $this->db->query("SELECT * FROM users");
        return $result->fetch_all(MYSQLI_ASSOC);
    }

    public function getById($id) {
        $stmt = $this->db->prepare("SELECT * FROM users WHERE id = ?");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        return $stmt->get_result()->fetch_assoc();
    }

    // Update
    public function update($id, $name, $email) {
        $stmt = $this->db->prepare("UPDATE users SET name = ?, email = ? WHERE id = ?");
        $stmt->bind_param("ssi", $name, $email, $id);
        return $stmt->execute();
    }

    // Delete
    public function delete($id) {
        $stmt = $this->db->prepare("DELETE FROM users WHERE id = ?");
        $stmt->bind_param("i", $id);
        return $stmt->execute();
    }
}
?>
로그인 후 복사

3단계: 홈 페이지

사용자 목록을 표시하고 탐색을 관리하는 index.php 파일을 만듭니다.

<?php
include 'User.php';

$user = new User();
$users = $user->getAll();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CRUD OOP PHP</title>
</head>
<body>
    <h1>Lista de Usuários</h1>
    <a href="create.php">Adicionar Novo Usuário</a>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Nome</th>
            <th>Email</th>
            <th>Ações</th>
        </tr>
        <?php foreach ($users as $u) { ?>
            <tr>
                <td><?= $u['id'] ?></td>
                <td><?= $u['name'] ?></td>
                <td><?= $u['email'] ?></td>
                <td>
                    <a href="edit.php?id=<?= $u['id'] ?>">Editar</a>
                    <a href="delete.php?id=<?= $u['id'] ?>" onclick="return confirm('Deseja excluir este usuário?')">Excluir</a>
                </td>
            </tr>
        <?php } ?>
    </table>
</body>
</html>
로그인 후 복사

4단계: 사용자 생성

새 사용자를 추가하려면 create.php 파일을 만드세요.

<?php
include 'User.php';

$user = new User();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];

    if ($user->create($name, $email)) {
        header("Location: index.php");
        exit;
    } else {
        echo "Erro ao criar usuário.";
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Criar Usuário</title>
</head>
<body>
    <h1>Adicionar Novo Usuário</h1>
    <form method="POST">
        <label for="name">Nome:</label>
        <input type="text">




<hr>

<h3>
  
  
  Passo 5: Editar Usuário
</h3>

<p>Crie um arquivo edit.php para atualizar os dados do usuário:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
include 'User.php';

$user = new User();
$id = $_GET['id'];
$data = $user->getById($id);

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];

    if ($user->update($id, $name, $email)) {
        header("Location: index.php");
        exit;
    } else {
        echo "Erro ao atualizar usuário.";
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Editar Usuário</title>
</head>
<body>
    <h1>Editar Usuário</h1>
    <form method="POST">
        <label for="name">Nome:</label>
        <input type="text">




<hr>

<h3>
  
  
  Passo 6: Excluir Usuário
</h3>

<p>Crie um arquivo delete.php para deletar um usuário:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
include 'User.php';

$user = new User();
$id = $_GET['id'];

if ($user->delete($id)) {
    header("Location: index.php");
    exit;
} else {
    echo "Erro ao excluir usuário.";
}
?>
로그인 후 복사

프로젝트 실행 방법

  1. 로컬 서버(예: XAMPP 또는 LAMP)를 설정합니다.
  2. 먼저 SQL을 이용해 데이터베이스를 생성합니다.
  3. 모든 파일을 공개 디렉토리의 폴더에 넣으세요.
  4. 브라우저에서 http://localhost/your_pasta/index.php로 이동하세요.

이 예는 객체 지향 CRUD의 기초이며 입력 유효성 검사, 보다 강력한 오류 처리, 네임스페이스 사용과 같은 모범 사례를 통해 개선될 수 있습니다.

다음은 PHP에서 두 개의 API를 생성하는 방법에 대한 예입니다. 하나는 백엔드 API로 사용하고 다른 하나는 클라이언트로 사용하여 첫 번째 API를 사용합니다.


사용할 API 생성(백엔드)

1단계: 데이터베이스 구조

데이터베이스에 사용자 테이블을 생성합니다.

CREATE DATABASE api_example;
USE api_example;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE
);
로그인 후 복사

2단계: API 백엔드

엔드포인트를 사용할 수 있도록 api.php라는 파일을 생성하세요.

<?php
header("Content-Type: application/json");

include 'Database.php';

class UserAPI {
    private $db;

    public function __construct() {
        $this->db = (new Database())->conn;
    }

    public function handleRequest() {
        $method = $_SERVER['REQUEST_METHOD'];
        $endpoint = $_GET['endpoint'] ?? '';

        switch ($endpoint) {
            case 'users':
                if ($method === 'GET') {
                    $this->getUsers();
                } elseif ($method === 'POST') {
                    $this->createUser();
                } else {
                    $this->response(405, "Method Not Allowed");
                }
                break;

            default:
                $this->response(404, "Endpoint Not Found");
        }
    }

    private function getUsers() {
        $result = $this->db->query("SELECT * FROM users");
        $users = $result->fetch_all(MYSQLI_ASSOC);
        $this->response(200, $users);
    }

    private function createUser() {
        $input = json_decode(file_get_contents("php://input"), true);

        if (empty($input['name']) || empty($input['email'])) {
            $this->response(400, "Missing required fields: name or email");
            return;
        }

        $stmt = $this->db->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
        $stmt->bind_param("ss", $input['name'], $input['email']);

        if ($stmt->execute()) {
            $this->response(201, "User created successfully");
        } else {
            $this->response(500, "Internal Server Error");
        }
    }

    private function response($status, $data) {
        http_response_code($status);
        echo json_encode(["status" => $status, "data" => $data]);
    }
}

$api = new UserAPI();
$api->handleRequest();
?>
로그인 후 복사

2. API를 사용할 클라이언트 생성

API 클라이언트

백엔드 API를 사용하려면 client.php라는 파일을 생성하세요.

CREATE DATABASE crud_example;
USE crud_example;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE
);
로그인 후 복사
로그인 후 복사

3. API 테스트

1단계: 로컬 환경 구성

  1. 로컬 서버(XAMPP, LAMP 등)를 설정하세요.
  2. api.php와 client.php 파일을 동일한 공용 폴더에 배치하세요.

2단계: 테스트

  1. API 백엔드: http://localhost/api.php?endpoint=users로 이동하여 API 엔드포인트를 확인하세요.
  2. 클라이언트: 터미널이나 브라우저를 통해 client.php 파일을 실행하여 소비를 테스트합니다.

이 예는 기능적 기반입니다. 제작을 위해서는 다음을 권장합니다:

  • 인증 토큰을 사용하세요(예: JWT).
  • 데이터 검증 및 정리를 추가합니다.
  • 오류 관리 및 HTTP 응답을 개선합니다.

PHP 및 MySQL을 사용하는 주니어 개발자를 위한 기술 인터뷰를 준비하는 경우 일반적으로 다루는 주요 주제와 몇 가지 팁은 다음과 같습니다.


PHP 기초

  • 기본 구문: 변수, 배열, 문자열, 루프, 함수 및 제어 구조에 대한 지식
  • 내장 함수: 문자열(예: 분해, 내파, 자르기), 배열(array_merge, array_filter) 및 숫자(round, rand) 조작
  • 객체 지향(OOP): 클래스, 객체, 상속, 캡슐화, 다형성 및 인터페이스
  • 파일 작업: fopen, fwrite, file_get_contents.
  • 오류 및 예외 처리: try-catch 및 PHP에서 오류를 처리하는 방법
  • 수퍼글로벌: $_POST, $_GET, $_SESSION, $_COOKIE 및 사용 방법

2. MySQL과 PHP 통합

  • 기본 쿼리: SELECT, INSERT, UPDATE, DELETE, WHERE, ORDER BY 및 LIMIT와 같은 절 유무
  • Joins: INNER JOIN, LEFT JOIN, RIGHT JOIN 사용법을 알아보세요.
  • 관계: 관련 테이블 작업(1:1, 1:N, N:N).
  • PDO 또는 MySQLi를 사용한 CRUD: 쿼리 실행 및 준비된 쿼리를 사용한 SQL 주입 방지에 대한 지식
  • 지수: 지수는 무엇이며 성과에 어떻게 도움이 됩니까?
  • 트랜잭션: MySQL의 개념 및 사용(START TRANSACTION, COMMIT, ROLLBACK).

3. 데이터 구조와 논리

  • 기본 알고리즘: 정렬(버블 정렬, 퀵 정렬), 검색(바이너리, 선형).
  • 데이터 구조: 배열, 스택, 큐, 목록.
  • 문제 해결: 기술적인 문제(예: HackerRank, Codewars)에서 발견되는 작은 논리 문제를 해결해 보세요.

4. 모범 사례 및 표준

  • 클린 코드: 설명적인 변수 및 함수 이름 사용, 들여쓰기가 잘 된 코드
  • DRY(반복하지 마세요)KISS(Keep It Simple, Stupid).
  • 기본 보안: SQL 주입, XSS, CSRF 방지

5. 웹 개발

  • 기본 HTML/CSS/JavaScript: 프런트엔드와 상호작용하는 백엔드 작업에 대한 충분한 지식
  • 양식: 양식 처리, 서버측 유효성 검사.
  • RESTful API: API, HTTP 메서드(GET, POST, PUT, DELETE)를 생성하고 사용하는 방법.
  • 세션 및 인증: $_SESSION 및 기본 로그인/로그아웃 관리 사용

6. 도구 및 환경

  • Git을 사용한 버전 관리: 커밋, 브랜치, 병합 및 끌어오기 요청 생성 방법
  • PHP Composer: 외부 종속성을 사용하는 방법을 이해합니다.
  • 로컬 환경: WAMP, XAMPP 또는 Docker 사용 경험.
  • 디버깅: var_dump, print_r 또는 Xdebug와 같은 도구를 사용합니다.

7. 소프트웨어공학의 기본개념

  • 아키텍처 모델: MVC(모델-뷰-컨트롤러).
  • 관계형 데이터베이스: 테이블, 기본 키 및 외래 키의 정규화
  • 버전 제어: Git 저장소로 작업하고 팀 워크플로(예: Git Flow)를 이해합니다.

8. 행동 질문

후배 기업도 소프트 스킬을 평가합니다. 다음과 같은 질문에 대비하세요.

  • PHP를 선택한 이유는 무엇인가요?
  • 압박감 속에서 문제를 어떻게 해결하시나요?
  • 이미 개발한 프로젝트에 대해 알려주세요.
  • 오류는 어떻게 처리하나요?

눈에 띄는 팁

  1. 인터뷰 전에 실용적인 것을 디자인하세요: 예: 간단한 CRUD, RESTful API 또는 기본 로그인 시스템. 이는 귀하의 적극적 활동을 보여줍니다.
  2. 회사에 대해 알아보기: 회사가 하는 일과 기술을 이해하고 귀하의 요구 사항에 맞게 답변을 조정할 수 있는지 확인하세요.
  3. 솔직해지세요: 모든 것을 알지 못하는 것이 정상입니다. 배우려는 의지와 지식 격차를 해결하는 방법을 보여주세요.

위 내용은 CRUD PHP, MySQL, API 및 중요한 기본 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿