CRUD PHP dan MySQL dan API dan Asas Penting
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 );
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); } ?>
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>
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); } } } ?>
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(); } } ?>
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>
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."; } ?>
Cara Menjalankan Projek
- Sediakan pelayan setempat (seperti XAMPP atau LAMP).
- Buat pangkalan data menggunakan SQL pada mulanya.
- Letakkan semua fail dalam folder dalam direktori awam.
- 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 );
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(); ?>
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 );
3. Menguji API
Langkah 1: Konfigurasikan persekitaran setempat
- Sediakan pelayan setempat anda (XAMPP, LAMP atau serupa).
- Letakkan fail api.php dan client.php dalam folder awam yang sama.
Langkah 2: Ujian
- API Backend: Pergi ke http://localhost/api.php?endpoint=users untuk menyemak titik akhir API.
- 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
- Reka bentuk sesuatu yang praktikal sebelum temu duga: Contoh, CRUD mudah, API RESTful atau sistem log masuk asas. Ini menunjukkan proaktiviti anda.
- Kenali syarikat: Fahami perkara yang dilakukannya, teknologinya dan lihat jika anda boleh menyelaraskan jawapan anda dengan keperluan anda.
- 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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Pengimbasan jadual penuh mungkin lebih cepat dalam MySQL daripada menggunakan indeks. Kes -kes tertentu termasuk: 1) jumlah data adalah kecil; 2) apabila pertanyaan mengembalikan sejumlah besar data; 3) Apabila lajur indeks tidak selektif; 4) Apabila pertanyaan kompleks. Dengan menganalisis rancangan pertanyaan, mengoptimumkan indeks, mengelakkan lebih banyak indeks dan tetap mengekalkan jadual, anda boleh membuat pilihan terbaik dalam aplikasi praktikal.

Ya, MySQL boleh dipasang pada Windows 7, dan walaupun Microsoft telah berhenti menyokong Windows 7, MySQL masih serasi dengannya. Walau bagaimanapun, perkara berikut harus diperhatikan semasa proses pemasangan: Muat turun pemasang MySQL untuk Windows. Pilih versi MySQL yang sesuai (komuniti atau perusahaan). Pilih direktori pemasangan yang sesuai dan set aksara semasa proses pemasangan. Tetapkan kata laluan pengguna root dan simpan dengan betul. Sambung ke pangkalan data untuk ujian. Perhatikan isu keserasian dan keselamatan pada Windows 7, dan disyorkan untuk menaik taraf ke sistem operasi yang disokong.

Keupayaan carian teks penuh InnoDB sangat kuat, yang dapat meningkatkan kecekapan pertanyaan pangkalan data dan keupayaan untuk memproses sejumlah besar data teks. 1) InnoDB melaksanakan carian teks penuh melalui pengindeksan terbalik, menyokong pertanyaan carian asas dan maju. 2) Gunakan perlawanan dan terhadap kata kunci untuk mencari, menyokong mod boolean dan carian frasa. 3) Kaedah pengoptimuman termasuk menggunakan teknologi segmentasi perkataan, membina semula indeks dan menyesuaikan saiz cache untuk meningkatkan prestasi dan ketepatan.

Perbezaan antara indeks clustered dan indeks bukan cluster adalah: 1. Klustered Index menyimpan baris data dalam struktur indeks, yang sesuai untuk pertanyaan oleh kunci dan julat utama. 2. Indeks Indeks yang tidak berkumpul indeks nilai utama dan penunjuk kepada baris data, dan sesuai untuk pertanyaan lajur utama bukan utama.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

MySQL menyokong empat jenis indeks: B-Tree, Hash, Full-Text, dan Spatial. 1. B-Tree Index sesuai untuk carian nilai yang sama, pertanyaan dan penyortiran. 2. Indeks hash sesuai untuk carian nilai yang sama, tetapi tidak menyokong pertanyaan dan penyortiran pelbagai. 3. Indeks teks penuh digunakan untuk carian teks penuh dan sesuai untuk memproses sejumlah besar data teks. 4. Indeks spatial digunakan untuk pertanyaan data geospatial dan sesuai untuk aplikasi GIS.

Dalam pangkalan data MySQL, hubungan antara pengguna dan pangkalan data ditakrifkan oleh kebenaran dan jadual. Pengguna mempunyai nama pengguna dan kata laluan untuk mengakses pangkalan data. Kebenaran diberikan melalui perintah geran, sementara jadual dibuat oleh perintah membuat jadual. Untuk mewujudkan hubungan antara pengguna dan pangkalan data, anda perlu membuat pangkalan data, membuat pengguna, dan kemudian memberikan kebenaran.

MySQL dan Mariadb boleh wujud bersama, tetapi perlu dikonfigurasikan dengan berhati -hati. Kuncinya adalah untuk memperuntukkan nombor port dan direktori data yang berbeza untuk setiap pangkalan data, dan menyesuaikan parameter seperti peruntukan memori dan saiz cache. Konfigurasi sambungan, konfigurasi aplikasi, dan perbezaan versi juga perlu dipertimbangkan dan perlu diuji dengan teliti dan dirancang untuk mengelakkan perangkap. Menjalankan dua pangkalan data secara serentak boleh menyebabkan masalah prestasi dalam situasi di mana sumber terhad.
