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); } ?>
第三步:主页
创建一个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>
第四步:创建用户
创建一个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 步:银行运营课程
创建User.php文件来管理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(); } } ?>
第三步:主页
创建一个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>
第四步:创建用户
创建一个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 中创建两个 API 的示例:一个 后端 API 将被使用,另一个作为 客户端 来使用第一个 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客户端
创建一个名为 client.php 的文件来使用后端 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. 测试API
第一步:配置本地环境
- 设置您的本地服务器(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 中的概念和使用(开始事务、提交、回滚)。
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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

全表扫描在MySQL中可能比使用索引更快,具体情况包括:1)数据量较小时;2)查询返回大量数据时;3)索引列不具备高选择性时;4)复杂查询时。通过分析查询计划、优化索引、避免过度索引和定期维护表,可以在实际应用中做出最优选择。

是的,可以在 Windows 7 上安装 MySQL,虽然微软已停止支持 Windows 7,但 MySQL 仍兼容它。不过,安装过程中需要注意以下几点:下载适用于 Windows 的 MySQL 安装程序。选择合适的 MySQL 版本(社区版或企业版)。安装过程中选择适当的安装目录和字符集。设置 root 用户密码,并妥善保管。连接数据库进行测试。注意 Windows 7 上的兼容性问题和安全性问题,建议升级到受支持的操作系统。

InnoDB的全文搜索功能非常强大,能够显着提高数据库查询效率和处理大量文本数据的能力。 1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。 2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。 3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

聚集索引和非聚集索引的区别在于:1.聚集索引将数据行存储在索引结构中,适合按主键查询和范围查询。2.非聚集索引存储索引键值和数据行的指针,适用于非主键列查询。

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

MySQL支持四种索引类型:B-Tree、Hash、Full-text和Spatial。1.B-Tree索引适用于等值查找、范围查询和排序。2.Hash索引适用于等值查找,但不支持范围查询和排序。3.Full-text索引用于全文搜索,适合处理大量文本数据。4.Spatial索引用于地理空间数据查询,适用于GIS应用。

MySQL 数据库中,用户和数据库的关系通过权限和表定义。用户拥有用户名和密码,用于访问数据库。权限通过 GRANT 命令授予,而表由 CREATE TABLE 命令创建。要建立用户和数据库之间的关系,需创建数据库、创建用户,然后授予权限。

MySQL 和 MariaDB 可以共存,但需要谨慎配置。关键在于为每个数据库分配不同的端口号和数据目录,并调整内存分配和缓存大小等参数。连接池、应用程序配置和版本差异也需要考虑,需要仔细测试和规划以避免陷阱。在资源有限的情况下,同时运行两个数据库可能会导致性能问题。
