CRUD PHP、MySQL、API、および重要な基礎
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."; } ?>
プロジェクトの実行方法
- ローカルサーバー (XAMPP や LAMP など) をセットアップします。
- 最初に SQL を使用してデータベースを作成します。
- すべてのファイルをパブリック ディレクトリ内のフォルダーに配置します。
- ブラウザで 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: ローカル環境を構成する
- ローカル サーバー (XAMPP、LAMP など) をセットアップします。
- api.php ファイルと client.php ファイルを同じパブリック フォルダーに配置します。
ステップ 2: テスト
- API バックエンド: http://localhost/api.php?endpoint=users に移動して API エンドポイントを確認します。
- クライアント: ターミナルまたはブラウザーで 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 を選んだのですか?
- プレッシャーの下でどのように問題を解決しますか?
- あなたがすでに開発したプロジェクトについて教えてください。
- エラーにはどう対処しますか?
目立つためのヒント
- 面接の前に実用的なものを設計します: 例: 単純な CRUD、RESTful API、または基本的なログイン システム。これはあなたの積極性を示しています。
- 会社について知りましょう: 会社の事業内容やテクノロジーを理解し、自分の答えを自分のニーズに合わせられるかどうかを確認してください。
- 正直に言う: すべてを知らないのは普通のことです。学習意欲と、知識のギャップをどのように解決するかを示します。
以上がCRUD PHP、MySQL、API、および重要な基礎の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











完全なテーブルスキャンは、MySQLでインデックスを使用するよりも速い場合があります。特定のケースには以下が含まれます。1)データボリュームは小さい。 2)クエリが大量のデータを返すとき。 3)インデックス列が高度に選択的でない場合。 4)複雑なクエリの場合。クエリプランを分析し、インデックスを最適化し、オーバーインデックスを回避し、テーブルを定期的にメンテナンスすることにより、実際のアプリケーションで最良の選択をすることができます。

はい、MySQLはWindows 7にインストールできます。MicrosoftはWindows 7のサポートを停止しましたが、MySQLは引き続き互換性があります。ただし、インストールプロセス中に次のポイントに注意する必要があります。WindowsのMySQLインストーラーをダウンロードしてください。 MySQL(コミュニティまたはエンタープライズ)の適切なバージョンを選択します。インストールプロセス中に適切なインストールディレクトリと文字セットを選択します。ルートユーザーパスワードを設定し、適切に保ちます。テストのためにデータベースに接続します。 Windows 7の互換性とセキュリティの問題に注意してください。サポートされているオペレーティングシステムにアップグレードすることをお勧めします。

INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

クラスター化されたインデックスと非クラスター化されたインデックスの違いは次のとおりです。1。クラスター化されたインデックスは、インデックス構造にデータを保存します。これは、プライマリキーと範囲でクエリするのに適しています。 2.非クラスター化されたインデックスストアは、インデックスキー値とデータの行へのポインターであり、非プリマリーキー列クエリに適しています。

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

MySQLは、Bツリー、ハッシュ、フルテキスト、および空間の4つのインデックスタイプをサポートしています。 1.B-Treeインデックスは、等しい値検索、範囲クエリ、ソートに適しています。 2。ハッシュインデックスは、等しい値検索に適していますが、範囲のクエリとソートをサポートしていません。 3.フルテキストインデックスは、フルテキスト検索に使用され、大量のテキストデータの処理に適しています。 4.空間インデックスは、地理空間データクエリに使用され、GISアプリケーションに適しています。

MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

MySQLとMariaDBは共存できますが、注意して構成する必要があります。重要なのは、さまざまなポート番号とデータディレクトリを各データベースに割り当て、メモリ割り当てやキャッシュサイズなどのパラメーターを調整することです。接続プーリング、アプリケーションの構成、およびバージョンの違いも考慮する必要があり、落とし穴を避けるために慎重にテストして計画する必要があります。 2つのデータベースを同時に実行すると、リソースが制限されている状況でパフォーマンスの問題を引き起こす可能性があります。
