图解PHP & MySQL:服务器端Web开发入门

引言

PHP 和 MySQL 是 Web 开发中的黄金组合,PHP 负责服务器端脚本处理,MySQL 负责数据库管理。本篇文章将介绍如何使用 PHP 和 MySQL 创建一个简单的Web应用,包括设置开发环境、连接数据库、进行CRUD操作(创建、读取、更新、删除)等。

开发环境设置

  1. 安装 XAMPP/WAMP/MAMP:这些集成环境包含了Apache服务器、PHP和MySQL。

  2. 启动 Apache 和 MySQL:安装后,打开控制面板,启动 Apache 和 MySQL 服务。

创建数据库和表

使用 phpMyAdmin 或 MySQL 命令行创建一个数据库和表。

sql 复制代码
CREATE DATABASE myapp;

USE myapp;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    password VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

PHP 项目结构

创建项目文件夹,结构如下:

php 复制代码
myapp/
├── index.php
├── db.php
└── users.php

数据库连接 (db.php)

php 复制代码
<?php
$host = 'localhost';
$db = 'myapp';
$user = 'root';  // 默认的MySQL用户
$pass = '';      // 默认的MySQL密码,安装时设置

$dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4";

try {
    $pdo = new PDO($dsn, $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die('Connection failed: ' . $e->getMessage());
}
?>

创建用户 (index.php)

php 复制代码
<?php
require 'db.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = password_hash($_POST['password'], PASSWORD_BCRYPT);

    $sql = "INSERT INTO users (username, email, password) VALUES (?, ?, ?)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$username, $email, $password]);

    echo "User created successfully!";
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Create User</title>
</head>
<body>
    <form method="post" action="">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required>
        <br>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
        <br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required>
        <br>
        <button type="submit">Create User</button>
    </form>
</body>
</html>

读取用户数据 (users.php)

php 复制代码
<?php
require 'db.php';

$sql = "SELECT * FROM users";
$stmt = $pdo->query($sql);
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Users</title>
</head>
<body>
    <h1>Users</h1>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Username</th>
            <th>Email</th>
            <th>Created At</th>
        </tr>
        <?php foreach ($users as $user): ?>
        <tr>
            <td><?php echo htmlspecialchars($user['id']); ?></td>
            <td><?php echo htmlspecialchars($user['username']); ?></td>
            <td><?php echo htmlspecialchars($user['email']); ?></td>
            <td><?php echo htmlspecialchars($user['created_at']); ?></td>
        </tr>
        <?php endforeach; ?>
    </table>
</body>
</html>

更新用户数据

index.php 中添加更新功能。

php 复制代码
<?php
require 'db.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['update'])) {
        $id = $_POST['id'];
        $username = $_POST['username'];
        $email = $_POST['email'];
        $sql = "UPDATE users SET username = ?, email = ? WHERE id = ?";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$username, $email, $id]);
        echo "User updated successfully!";
    } else {
        // 创建用户的代码
    }
}

if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $sql = "SELECT * FROM users WHERE id = ?";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$id]);
    $user = $stmt->fetch(PDO::FETCH_ASSOC);
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><?php echo isset($user) ? 'Edit' : 'Create'; ?> User</title>
</head>
<body>
    <form method="post" action="">
        <?php if (isset($user)): ?>
            <input type="hidden" name="id" value="<?php echo $user['id']; ?>">
        <?php endif; ?>
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required value="<?php echo isset($user) ? htmlspecialchars($user['username']) : ''; ?>">
        <br>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required value="<?php echo isset($user) ? htmlspecialchars($user['email']) : ''; ?>">
        <br>
        <button type="submit" name="<?php echo isset($user) ? 'update' : 'create'; ?>"><?php echo isset($user) ? 'Update' : 'Create'; ?> User</button>
    </form>
</body>
</html>

删除用户数据

users.php 中添加删除功能。

php 复制代码
<?php
require 'db.php';

if (isset($_GET['delete'])) {
    $id = $_GET['delete'];
    $sql = "DELETE FROM users WHERE id = ?";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$id]);
    header('Location: users.php');
}

$sql = "SELECT * FROM users";
$stmt = $pdo->query($sql);
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Users</title>
</head>
<body>
    <h1>Users</h1>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Username</th>
            <th>Email</th>
            <th>Created At</th>
            <th>Actions</th>
        </tr>
        <?php foreach ($users as $user): ?>
        <tr>
            <td><?php echo htmlspecialchars($user['id']); ?></td>
            <td><?php echo htmlspecialchars($user['username']); ?></td>
            <td><?php echo htmlspecialchars($user['email']); ?></td>
            <td><?php echo htmlspecialchars($user['created_at']); ?></td>
            <td>
                <a href="index.php?id=<?php echo $user['id']; ?>">Edit</a>
                <a href="users.php?delete=<?php echo $user['id']; ?>" onclick="return confirm('Are you sure?')">Delete</a>
            </td>
        </tr>
        <?php endforeach; ?>
    </table>
</body>
</html>

结论

通过以上步骤,我们创建了一个简单的用户管理系统,涵盖了创建、读取、更新和删除用户数据的基本操作。这只是PHP和MySQL开发的基础,实际应用中会涉及到更多复杂的功能和安全性考虑,如用户认证、输入验证等。希望本文能帮助你入门PHP和MySQL开发。

⭐️ 好书推荐

《图解PHP & MySQL 服务器端Web开发》

【内容简介】

欢迎使用更高效的方式来学习PHP和MySQL。PHP运行在Web服务器端,通过使用存储在MySQL数据库中的数据,使得网站可以为每一位访问者显示不同的定制页面。书中采用简单、直观的图示化讲解风格,并辅以简短的代码示例,使得读者能够轻松地使用PHP和MySQL开发网站;网站具有丰富的功能,允许访问者注册为会员、创建文章、编辑文章、上传图片、管理个人资料、发表评论或"点赞"帖子等等。学习内容:阅读和编写PHP代码 使用MySQL数据库存储数据 创建适合每位访问者的页面 构建内容管理系统或社交网络

📚 清华大学出版社购买链接:《图解PHP & MySQL 服务器端Web开发》

相关推荐
程序猿乐锅几秒前
【MySQL | 第六篇】 SQL 优化
数据库·sql·mysql
无聊的老谢4 分钟前
Vue 3 + Leaflet 实现高性能 Web GIS 基站监控平台
前端·javascript·vue.js
j7~5 分钟前
【MYSQL】索引特性--详解
数据库·mysql·索引操作·索引的理解·mysql与磁盘·b+树与mysql
之歆6 分钟前
Day23_Bootstrap 前端框架完全指南:从栅格系统到组件化开发
开发语言·前端·javascript·前端框架·bootstrap·ecmascript·less
前端 贾公子6 分钟前
3.响应式系统基础:从发布订阅模式的角度理解 Vue2 的数据响应式原理(上)
前端·javascript·vue.js
2501_940041749 分钟前
纯前端高阶实战:涵盖3D、音频可视化与复杂交互的开发命题
前端
AIFQuant10 分钟前
外汇交易平台技术栈深度解析:行情 API、清算、风控、前端一体化方案
前端·python·websocket·金融·restful
NiceCloud喜云8 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
wordbaby9 小时前
React Native + RNOH:跨页面数据回传的最佳实践与避坑指南
前端·react native
丷丩9 小时前
MapLibre GL JS第22课:查看本地GeoJSON
前端·javascript·map·mapbox·maplibre gl js