ホームページ > データベース > mysql チュートリアル > CRUD PHP、MySQL、API、および重要な基礎

CRUD PHP、MySQL、API、および重要な基礎

Barbara Streisand
リリース: 2024-12-31 13:23:10
オリジナル
854 人が閲覧しました

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 で 2 つの API を作成する方法の例を示します。1 つは バックエンド API として使用され、もう 1 つは クライアント として最初の 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 の基礎

  • 基本構文: 変数、配列、文​​字列、ループ、関数、制御構造に関する知識。
  • 組み込み関数: 文字列 (explode、implode、trim など)、配列 (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 などの句の有無にかかわらず。
  • 結合: 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 (シンプルにしてください、愚かです)
  • 基本セキュリティ: 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート