search
HomeDatabaseMysql TutorialCRUD PHP and MySQL and API and Important Fundamentals

CRUD PHP e MySQL e API e Fundamentos importantes

How to create a CRUD (Create, Read, Update, Delete) in PHP with MySQL.

This example uses the MySQLi extension to perform database operations.

Step 1: Creating the Database and Table

Run the following SQL script to create the database and a table called 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
);

Step 2: Connection to the Database

Create a config.php file to manage the database connection:

<?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);
}
?>

Step 3: Home Page

Create an index.php file to list users and add creation, editing and deletion functionality:

<?php include 'config.php';

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




    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CRUD em PHP</title>


    <h1 id="Lista-de-Usuários">Lista de Usuários</h1>
    <a href="create.php">Adicionar Novo Usuário</a>
    
fetch_assoc()) { ?>
ID Nome Email Ações
= $row['id'] ?> = $row['name'] ?> = $row['email'] ?> Editar Excluir

Step 4: Create User

Create a create.php file to add a new user:

<?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;
    }
}
?>




    <meta charset="UTF-8">
    <title>Criar Usuário</title>


    <h1 id="Adicionar-Novo-Usuário">Adicionar Novo Usuário</h1>
    

Passo 5: Editar Usuário

Crie um arquivo edit.php para editar um usuário existente:

<?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);
        }
    }
}
?>

Step 2: Class for Bank Operations

Create a User.php file to manage CRUD operations:

<?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();
    }
}
?>

Step 3: Home Page

Create an index.php file to display the list of users and manage navigation:

<?php include 'User.php';

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




    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CRUD OOP PHP</title>


    <h1 id="Lista-de-Usuários">Lista de Usuários</h1>
    <a href="create.php">Adicionar Novo Usuário</a>
    
ID Nome Email Ações
= $u['id'] ?> = $u['name'] ?> = $u['email'] ?> Editar Excluir

Step 4: Create User

Create a create.php file to add new users:

<?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.";
    }
}
?>




    <meta charset="UTF-8">
    <title>Criar Usuário</title>


    <h1 id="Adicionar-Novo-Usuário">Adicionar Novo Usuário</h1>
    

Passo 5: Editar Usuário

Crie um arquivo edit.php para atualizar os dados do usuário:

<?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.";
    }
}
?>




    <meta charset="UTF-8">
    <title>Editar Usuário</title>


    <h1 id="Editar-Usuário">Editar Usuário</h1>
    

Passo 6: Excluir Usuário

Crie um arquivo delete.php para deletar um usuário:

<?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.";
}
?>

How to Run the Project

  1. Set up local server (like XAMPP or LAMP).
  2. Create the database using SQL at first.
  3. Place all files in a folder in the public directory.
  4. Go to http://localhost/your_pasta/index.php in your browser.

This example is a basis for an object-oriented CRUD and can be improved with good practices, such as input validation, more robust error handling, and the use of namespaces.

Here is an example of how to create two APIs in PHP: one backend API to be consumed and another as client to consume the first API.


Creating the API to be consumed (Backend)

Step 1: Database Structure

Create a users table in the database:

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
);

Step 2: API Backend

Create a file called api.php to make the endpoints available.

<?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. Creating the Client to Consume API

API Client

Create a file called client.php to consume the backend API.

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. Testing the API

Step 1: Configure the local environment

  1. Set up your local server (XAMPP, LAMP or similar).
  2. Place the api.php and client.php files in the same public folder.

Step 2: Test

  1. API Backend: Go to http://localhost/api.php?endpoint=users to check the API endpoint.
  2. Client: Run the client.php file in the terminal or through the browser to test consumption.

This example is a functional basis. For production, it is recommended:

  • Use authentication tokens (like JWT).
  • Add data validation and sanitization.
  • Improve error management and HTTP responses.

If you are preparing for a technical interview for a junior developer with PHP and MySQL, here are the main topics that are usually covered, plus some tips:


PHP Fundamentals

  • Basic syntax: Knowledge about variables, arrays, strings, loops, functions and control structures.
  • Built-in functions: Manipulation of strings (e.g., explode, implode, trim), arrays (array_merge, array_filter) and numbers (round, rand).
  • Object Orientation (OOP): Classes, objects, inheritance, encapsulation, polymorphism and interfaces.
  • Working with files: fopen, fwrite, file_get_contents.
  • Error and exception handling: try-catch and how to handle errors in PHP.
  • Superglobals: $_POST, $_GET, $_SESSION, $_COOKIE, and how to use them.

2. MySQL and PHP Integration

  • Basic queries: SELECT, INSERT, UPDATE, DELETE, with and without clauses such as WHERE, ORDER BY and LIMIT.
  • Joins: Know how to use INNER JOIN, LEFT JOIN, RIGHT JOIN.
  • Relationships: Work with related tables (1:1, 1:N, N:N).
  • CRUD with PDO or MySQLi: Knowledge in executing queries and protecting against SQL Injection using prepared queries.
  • Indices: What they are and how they help performance.
  • Transactions: Concept and use in MySQL (START TRANSACTION, COMMIT, ROLLBACK).

3. Data Structure and Logic

  • Basic algorithms: Sorting (Bubble Sort, Quick Sort), search (binary, linear).
  • Data structures: Arrays, stacks, queues, lists.
  • Troubleshooting: Experience solving small logic problems, such as those found in technical challenges (e.g., HackerRank, Codewars).

4. Good Practices and Standards

  • Clean Code: Use of descriptive variable and function names, well-indented code.
  • DRY (Don't Repeat Yourself) and KISS (Keep It Simple, Stupid).
  • Basic security: Prevention against SQL Injection, XSS and CSRF.

5. Web Development

  • Basic HTML/CSS/JavaScript: Sufficient knowledge to work with backends that interact with frontends.
  • Forms: Forms processing, server-side validation.
  • RESTful APIs: How to create and consume APIs, HTTP methods (GET, POST, PUT, DELETE).
  • Sessions and authentication: Using $_SESSION and basic login/logout management.

6. Tools and Environment

  • Versioning with Git: Commit, branch, merge and how to create pull requests.
  • PHP Composer: Understand how to use external dependencies.
  • Local environment: Experience with WAMP, XAMPP or Docker.
  • Debugging: Use of var_dump, print_r, or tools like Xdebug.

7. Basic Concepts of Software Engineering

  • Architecture models: MVC (Model-View-Controller).
  • Relational database: Normalization of tables, primary and foreign keys.
  • Version control: Work with Git repositories and understand team workflow (e.g., Git Flow).

8. Behavioral Questions

Junior companies also evaluate soft skills. Prepare for questions like:

  • Why did you choose PHP?
  • How do you solve problems under pressure?
  • Tell me about a project you have already developed.
  • How do you deal with errors?

Tips to Stand Out

  1. Design something practical before the interview: Example, a simple CRUD, a RESTful API, or a basic login system. This shows your proactivity.
  2. Get to know the company: Understand what it does, its technologies and see if you can align your answers with your needs.
  3. Be honest: It's normal not to know everything. Demonstrate a willingness to learn and how you resolve gaps in knowledge.

The above is the detailed content of CRUD PHP and MySQL and API and Important Fundamentals. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
What are some tools you can use to monitor MySQL performance?What are some tools you can use to monitor MySQL performance?Apr 23, 2025 am 12:21 AM

How to effectively monitor MySQL performance? Use tools such as mysqladmin, SHOWGLOBALSTATUS, PerconaMonitoring and Management (PMM), and MySQL EnterpriseMonitor. 1. Use mysqladmin to view the number of connections. 2. Use SHOWGLOBALSTATUS to view the query number. 3.PMM provides detailed performance data and graphical interface. 4.MySQLEnterpriseMonitor provides rich monitoring functions and alarm mechanisms.

How does MySQL differ from SQL Server?How does MySQL differ from SQL Server?Apr 23, 2025 am 12:20 AM

The difference between MySQL and SQLServer is: 1) MySQL is open source and suitable for web and embedded systems, 2) SQLServer is a commercial product of Microsoft and is suitable for enterprise-level applications. There are significant differences between the two in storage engine, performance optimization and application scenarios. When choosing, you need to consider project size and future scalability.

In what scenarios might you choose SQL Server over MySQL?In what scenarios might you choose SQL Server over MySQL?Apr 23, 2025 am 12:20 AM

In enterprise-level application scenarios that require high availability, advanced security and good integration, SQLServer should be chosen instead of MySQL. 1) SQLServer provides enterprise-level features such as high availability and advanced security. 2) It is closely integrated with Microsoft ecosystems such as VisualStudio and PowerBI. 3) SQLServer performs excellent in performance optimization and supports memory-optimized tables and column storage indexes.

How does MySQL handle character sets and collations?How does MySQL handle character sets and collations?Apr 23, 2025 am 12:19 AM

MySQLmanagescharactersetsandcollationsbyusingUTF-8asthedefault,allowingconfigurationatdatabase,table,andcolumnlevels,andrequiringcarefulalignmenttoavoidmismatches.1)Setdefaultcharactersetandcollationforadatabase.2)Configurecharactersetandcollationfor

What are triggers in MySQL?What are triggers in MySQL?Apr 23, 2025 am 12:11 AM

A MySQL trigger is an automatically executed stored procedure associated with a table that is used to perform a series of operations when a specific data operation is performed. 1) Trigger definition and function: used for data verification, logging, etc. 2) Working principle: It is divided into BEFORE and AFTER, and supports row-level triggering. 3) Example of use: Can be used to record salary changes or update inventory. 4) Debugging skills: Use SHOWTRIGGERS and SHOWCREATETRIGGER commands. 5) Performance optimization: Avoid complex operations, use indexes, and manage transactions.

How do you create and manage user accounts in MySQL?How do you create and manage user accounts in MySQL?Apr 22, 2025 pm 06:05 PM

The steps to create and manage user accounts in MySQL are as follows: 1. Create a user: Use CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password'; 2. Assign permissions: Use GRANTSELECT, INSERT, UPDATEONmydatabase.TO'newuser'@'localhost'; 3. Fix permission error: Use REVOKEALLPRIVILEGESONmydatabase.FROM'newuser'@'localhost'; then reassign permissions; 4. Optimization permissions: Use SHOWGRA

How does MySQL differ from Oracle?How does MySQL differ from Oracle?Apr 22, 2025 pm 05:57 PM

MySQL is suitable for rapid development and small and medium-sized applications, while Oracle is suitable for large enterprises and high availability needs. 1) MySQL is open source and easy to use, suitable for web applications and small and medium-sized enterprises. 2) Oracle is powerful and suitable for large enterprises and government agencies. 3) MySQL supports a variety of storage engines, and Oracle provides rich enterprise-level functions.

What are the disadvantages of using MySQL compared to other relational databases?What are the disadvantages of using MySQL compared to other relational databases?Apr 22, 2025 pm 05:49 PM

The disadvantages of MySQL compared to other relational databases include: 1. Performance issues: You may encounter bottlenecks when processing large-scale data, and PostgreSQL performs better in complex queries and big data processing. 2. Scalability: The horizontal scaling ability is not as good as Google Spanner and Amazon Aurora. 3. Functional limitations: Not as good as PostgreSQL and Oracle in advanced functions, some functions require more custom code and maintenance.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)