Rumah > pangkalan data > tutorial mysql > CRUD PHP dan MySQL dan API dan Asas Penting

CRUD PHP dan MySQL dan API dan Asas Penting

Barbara Streisand
Lepaskan: 2024-12-31 13:23:10
asal
879 orang telah melayarinya

CRUD PHP e MySQL e API e Fundamentos importantes

Bagaimana untuk mencipta CRUD (Buat, Baca, Kemas Kini, Padam) dalam PHP dengan MySQL.

Contoh ini menggunakan sambungan MySQLi untuk melaksanakan operasi pangkalan data.

Langkah 1: Mencipta Pangkalan Data dan Jadual

Jalankan skrip SQL berikut untuk mencipta pangkalan data dan jadual yang dipanggil pengguna:

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
);
Salin selepas log masuk
Salin selepas log masuk

Langkah 2: Sambungan ke Pangkalan Data

Buat fail config.php untuk mengurus sambungan pangkalan data:

<?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);
}
?>
Salin selepas log masuk

Langkah 3: Halaman Utama

Buat fail index.php untuk menyenaraikan pengguna dan menambah fungsi penciptaan, penyuntingan dan pemadaman:

<?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>
Salin selepas log masuk

Langkah 4: Buat Pengguna

Buat fail create.php untuk menambah pengguna baharu:

<?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);
        }
    }
}
?>
Salin selepas log masuk

Langkah 2: Kelas untuk Operasi Bank

Buat fail User.php untuk mengurus operasi CRUD:

<?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();
    }
}
?>
Salin selepas log masuk

Langkah 3: Halaman Utama

Buat fail index.php untuk memaparkan senarai pengguna dan uruskan navigasi:

<?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>
Salin selepas log masuk

Langkah 4: Buat Pengguna

Buat fail create.php untuk menambah pengguna baharu:

<?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.";
}
?>
Salin selepas log masuk

Cara Menjalankan Projek

  1. Sediakan pelayan setempat (seperti XAMPP atau LAMP).
  2. Buat pangkalan data menggunakan SQL pada mulanya.
  3. Letakkan semua fail dalam folder dalam direktori awam.
  4. Pergi ke http://localhost/your_pasta/index.php dalam penyemak imbas anda.

Contoh ini ialah asas untuk CRUD berorientasikan objek dan boleh dipertingkatkan dengan amalan baik, seperti pengesahan input, pengendalian ralat yang lebih mantap dan penggunaan ruang nama.

Berikut ialah contoh cara mencipta dua API dalam PHP: satu API belakang untuk digunakan dan satu lagi sebagai klien untuk menggunakan API pertama.


Mencipta API untuk digunakan (Backend)

Langkah 1: Struktur Pangkalan Data

Buat jadual pengguna dalam pangkalan data:

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
);
Salin selepas log masuk

Langkah 2: Bahagian Belakang API

Buat fail bernama api.php untuk menyediakan titik akhir.

<?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();
?>
Salin selepas log masuk

2. Mencipta API Pelanggan untuk Menggunakan

Klien API

Buat fail bernama client.php untuk menggunakan API bahagian belakang.

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
);
Salin selepas log masuk
Salin selepas log masuk

3. Menguji API

Langkah 1: Konfigurasikan persekitaran setempat

  1. Sediakan pelayan setempat anda (XAMPP, LAMP atau serupa).
  2. Letakkan fail api.php dan client.php dalam folder awam yang sama.

Langkah 2: Ujian

  1. API Backend: Pergi ke http://localhost/api.php?endpoint=users untuk menyemak titik akhir API.
  2. Pelanggan: Jalankan fail client.php dalam terminal atau melalui penyemak imbas untuk menguji penggunaan.

Contoh ini ialah asas berfungsi. Untuk pengeluaran, adalah disyorkan:

  • Gunakan token pengesahan (seperti JWT).
  • Tambah pengesahan data dan sanitasi.
  • Tingkatkan pengurusan ralat dan respons HTTP.

Jika anda sedang bersiap untuk temu duga teknikal untuk pembangun junior dengan PHP dan MySQL, berikut ialah topik utama yang biasanya diliputi, serta beberapa petua:


Asas PHP

  • Sintaks asas: Pengetahuan tentang pembolehubah, tatasusunan, rentetan, gelung, fungsi dan struktur kawalan.
  • Fungsi terbina dalam: Manipulasi rentetan (cth., meletup, meletup, memangkas), tatasusunan (array_merge, array_filter) dan nombor (bulat, rand).
  • Orientasi Objek (OOP): Kelas, objek, pewarisan, enkapsulasi, polimorfisme dan antara muka.
  • Bekerja dengan fail: fopen, fwrite, file_get_contents.
  • Ralat dan pengendalian pengecualian: cuba-tangkap dan cara mengendalikan ralat dalam PHP.
  • Superglobals: $_POST, $_GET, $_SESSION, $_COOKIE, dan cara menggunakannya.

2. Penyepaduan MySQL dan PHP

  • Pertanyaan asas: PILIH, MASUKKAN, KEMASKINI, PADAM, dengan dan tanpa klausa seperti WHERE, ORDER BY dan LIMIT.
  • Join: Tahu cara menggunakan INNER JOIN, KIRI JOIN, KANAN JOIN.
  • Perhubungan: Bekerja dengan jadual berkaitan (1:1, 1:N, N:N).
  • CRUD dengan PDO atau MySQLi: Pengetahuan dalam melaksanakan pertanyaan dan melindungi daripada SQL Injection menggunakan pertanyaan yang disediakan.
  • Indeks: Apakah itu dan cara ia membantu prestasi.
  • Transaksi: Konsep dan penggunaan dalam MySQL (MULAKAN URUS NIAGA, KOMIT, ROLLBACK).

3. Struktur Data dan Logik

  • Algoritma asas: Isih (Isih Buih, Isih Pantas), cari (perduaan, linear).
  • Struktur data: Tatasusunan, tindanan, baris gilir, senarai.
  • Penyelesaian masalah: Pengalaman menyelesaikan masalah logik kecil, seperti yang terdapat dalam cabaran teknikal (cth., HackerRank, Codewars).

4. Amalan dan Standard Baik

  • Kod Bersih: Penggunaan pembolehubah deskriptif dan nama fungsi, kod yang diinden dengan baik.
  • KERING (Jangan Ulangi Sendiri) dan Cium (Keep It Simple, Bodoh).
  • Keselamatan asas: Pencegahan terhadap SQL Injection, XSS dan CSRF.

5. Pembangunan Web

  • HTML/CSS/JavaScript Asas: Pengetahuan yang mencukupi untuk bekerja dengan hujung belakang yang berinteraksi dengan hujung hadapan.
  • Borang: Pemprosesan borang, pengesahan bahagian pelayan.
  • API RESTful: Cara membuat dan menggunakan API, kaedah HTTP (DAPATKAN, POS, LETAK, PADAM).
  • Sesi dan pengesahan: Menggunakan $_SESSION dan pengurusan log masuk/log keluar asas.

6. Alat dan Persekitaran

  • Versi dengan Git: Komit, cabang, cantum dan cara membuat permintaan tarik.
  • Komposer PHP: Fahami cara menggunakan kebergantungan luaran.
  • Persekitaran setempat: Pengalaman dengan WAMP, XAMPP atau Docker.
  • Nyahpepijat: Penggunaan var_dump, print_r atau alatan seperti Xdebug.

7. Konsep Asas Kejuruteraan Perisian

  • Model seni bina: MVC (Model-View-Controller).
  • Pangkalan data hubungan: Normalisasi jadual, kunci utama dan asing.
  • Kawalan versi: Bekerja dengan repositori Git dan fahami aliran kerja pasukan (mis., Aliran Git).

8. Soalan Tingkah Laku

Syarikat junior juga menilai kemahiran insaniah. Sediakan untuk soalan seperti:

  • Mengapa anda memilih PHP?
  • Bagaimana anda menyelesaikan masalah di bawah tekanan?
  • Beritahu saya tentang projek yang telah anda bangunkan.
  • Bagaimana anda menangani ralat?

Petua untuk Menonjolkan Diri

  1. Reka bentuk sesuatu yang praktikal sebelum temu duga: Contoh, CRUD mudah, API RESTful atau sistem log masuk asas. Ini menunjukkan proaktiviti anda.
  2. Kenali syarikat: Fahami perkara yang dilakukannya, teknologinya dan lihat jika anda boleh menyelaraskan jawapan anda dengan keperluan anda.
  3. Jujurlah: Adalah perkara biasa untuk tidak mengetahui segala-galanya. Tunjukkan kesediaan untuk belajar dan cara anda menyelesaikan jurang dalam pengetahuan.

Atas ialah kandungan terperinci CRUD PHP dan MySQL dan API dan Asas Penting. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan