PHP 与 MySQL 基础教程
第一部分:环境搭建
在开始编码之前,你需要在你的计算机上安装一个本地服务器环境,因为它包含运行 PHP 和 MySQL 所需的一切。
推荐工具:集成开发环境
对于初学者,最简单的方式是使用集成开发环境,它一键安装并配置好了 Apache (Web服务器), MySQL (数据库), 和 PHP。
- XAMPP (跨平台: Windows, macOS, Linux): 最流行,用户最多。
- MAMP (主要用于 macOS): 在 Mac 上非常流行。
- 官网下载: https://www.mamp.info/
- WAMP (仅限 Windows): 专为 Windows 设计。
安装步骤:
- 下载并运行安装程序。
- 按照提示完成安装,保持默认设置即可。
- 安装完成后,启动 XAMPP 控制面板,确保 Apache 和 MySQL 模块的 Start 按钮是绿色的,表示服务已启动。
测试环境:
打开你的浏览器,访问 http://localhost 或 http://127.0.0.1,如果你能看到 XAMPP 的欢迎页面,说明环境搭建成功!
第二部分:PHP 基础
PHP 是一种在服务器端执行的脚本语言,当用户请求一个 PHP 页面时,服务器会执行 PHP 代码,然后将纯 HTML 结果发送到用户的浏览器。
你的第一个 PHP 脚本
- 在 XAMPP 的安装目录下,找到
htdocs文件夹,这是你的 Web 根目录。 - 在
htdocs文件夹中创建一个新文件,命名为index.php。 - 用代码编辑器(如 VS Code, Sublime Text)打开
index.php,输入以下代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">PHP 测试</title>
</head>
<body>
<h1>欢迎来到 PHP 世界!</h1>
<?php
// 这是一个 PHP 代码块
echo "<p>当前时间是: " . date("Y-m-d H:i:s") . "</p>";
echo "<p>Hello, World!</p>";
?>
</body>
</html>
- 保存文件,然后在浏览器中访问
http://localhost/index.php。 - 你应该看到: 一个标题,以及一段显示当前时间的动态文本和 "Hello, World!"。
代码解释:
<?php ... ?>:这是 PHP 代码的标记,所有 PHP 代码都必须写在这对标记之间。- 单行注释。
echo:PHP 的一个语言结构,用于向输出(通常是 HTML)发送一个或多个字符串。- 点号是 PHP 中的连接符,用于将字符串连接起来。
date("Y-m-d H:i:s"):一个内置函数,用于获取当前日期和时间,并按指定格式输出。
PHP 变量与数据类型
PHP 是一种弱类型语言,你不需要在声明变量时指定其类型。
<?php
$name = "张三"; // 字符串
$age = 25; // 整数
$price = 99.99; // 浮点数
$isStudent = true; // 布尔值
echo "姓名: " . $name . "<br>";
echo "年龄: " . $age . "<br>";
echo "价格: " . $price . "<br>";
echo "是否为学生: " . ($isStudent ? "是" : "否") . "<br>";
?>
第三部分:MySQL 基础
MySQL 是一个关系型数据库管理系统,用于存储和管理数据。
创建数据库和表
- 启动 XAMPP 控制面板,点击 MySQL 模块的 Admin 按钮,这会打开 phpMyAdmin,一个用于管理 MySQL 数据库的 Web 界面。
- 在 phpMyAdmin 的主界面,点击顶部的 “新建” 选项卡。
- 在 “数据库名称” 输入框中输入
my_blog,然后点击 “创建”。 - 在左侧的数据库列表中,点击你刚创建的
my_blog数据库。 - 在右侧,点击 “在新数据库中创建表”。
- 输入表名
posts,并在“列数”中输入3,然后点击 “执行”。 - 现在来定义这三列:
- id:
- 类型:
INT - 长度/值:
11 - 属性:
UNSIGNED - 索引:
PRIMARY(并勾选A_I- AUTO_INCREMENT,表示自动递增)
- 类型:
- title:
- 类型:
VARCHAR - 长度/值:
255
- 类型:
- content:
- 类型:
TEXT
- 类型:
- id:
- 点击 “保存”,你的
posts表就创建好了!
第四部分:连接 PHP 与 MySQL
现在是最关键的部分:让 PHP 代码与 MySQL 数据库进行通信。
创建数据库连接文件
在 htdocs 文件夹中创建一个新文件夹 db_conn,并在其中创建一个文件 connect.php。
<?php
// 1. 定义数据库连接参数
$servername = "localhost"; // 或 "127.0.0.1"
$username = "root"; // 默认用户名
$password = ""; // 默认密码 (XAMPP默认为空)
$dbname = "my_blog"; // 我们创建的数据库名
// 2. 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 3. 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// echo "连接成功!"; // 可以取消注释来测试连接是否成功
?>
数据查询操作
创建一个新文件 read_posts.php,用于从数据库中读取所有文章并显示出来。
<?php
// 引入数据库连接文件
require_once 'db_conn/connect.php';
// SQL 查询语句,用于获取所有文章
$sql = "SELECT id, title, content FROM posts";
$result = $conn->query($sql);
// 检查查询结果中是否有数据
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
// fetch_assoc() 会获取一行数据作为一个关联数组
echo "<h2>" . htmlspecialchars($row["title"]) . "</h2>";
echo "<p>" . nl2br(htmlspecialchars($row["content"])) . "</p>";
echo "<hr>";
}
} else {
echo "暂无文章";
}
// 关闭连接
$conn->close();
?>
代码解释:
require_once 'db_conn/connect.php';:引入我们的数据库连接文件,避免重复连接。$conn->query($sql):执行 SQL 查询。$result->num_rows:返回查询结果中的行数。$result->fetch_assoc():从结果集中获取一行作为关联数组(键名是列名)。htmlspecialchars():一个非常重要的安全函数,用于防止 XSS (跨站脚本) 攻击,它会将特殊字符转换为 HTML 实体。nl2br():将换行符\n转换为 HTML 的<br>标签,以便在网页上正确显示段落。$conn->close():关闭数据库连接,这是一个好习惯。
数据插入操作
创建一个新文件 create_post.php,用于向数据库中插入一篇新文章。
<?php
require_once 'db_conn/connect.php';
// 检查表单是否提交
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 从 POST 请求中获取数据
$title = $_POST['title'];
$content = $_POST['content'];
// 使用预处理语句来防止 SQL 注入
$stmt = $conn->prepare("INSERT INTO posts (title, content) VALUES (?, ?)");
$stmt->bind_param("ss", $title, $content); // "ss" 表示两个字符串参数
// 执行并检查
if ($stmt->execute()) {
echo "新文章创建成功!<a href='read_posts.php'>查看文章</a>";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$stmt->close();
}
$conn->close();
?>
<!-- HTML 表单 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">创建新文章</title>
</head>
<body>
<h2>创建新文章</h2>
<form action="create_post.php" method="post">
<label for="title">标题:</label><br>
<input type="text" id="title" name="title" required><br><br>
<label for="content">内容:</label><br>
<textarea id="content" name="content" rows="10" cols="50" required></textarea><br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
代码解释:
$_POST:一个 PHP 超全局变量,用于收集通过method="post"提交的表单数据。- 预处理语句:这是防止 SQL 注入攻击的最佳实践,它先将 SQL 模板发送给数据库,然后再绑定变量,数据库会将其视为数据而不是可执行的 SQL 代码。
$stmt->prepare():准备一个 SQL 语句。 是占位符。$stmt->bind_param():将变量绑定到预处理语句的占位符上,第一个参数"ss"表示接下来的两个变量都是字符串类型。$stmt->execute():执行预处理语句。
第五部分:总结与进阶
你已经完成了 PHP 与 MySQL 的基础学习,掌握了:
- 环境搭建:使用 XAMPP。
- PHP 基础:语法、变量、
echo、函数。 - MySQL 基础:创建数据库和表。
- 核心操作:
- 连接:
new mysqli()。 - 查询:
SELECT+query()+fetch_assoc()。 - 插入:
INSERT+ 预处理语句 (prepare,bind_param,execute)。 - 安全:
htmlspecialchars()和 预处理语句 是必须掌握的安全技能。
- 连接:
下一步可以学习什么?
- 更新数据:学习
UPDATE语句,结合WHERE条件来修改特定的记录。 - 删除数据:学习
DELETE语句,同样需要WHERE条件来指定要删除的记录。 - 分页:当数据很多时,如何实现“上一页/下一页”功能。
- 用户认证:创建登录和注册系统,学习
SESSION的使用。 - 框架:学习使用现代 PHP 框架(如 Laravel, Symfony),它们提供了更强大、更安全、更高效的开发方式,可以让你避免“重复造轮子”。
这个教程为你打下了坚实的基础,现在可以开始动手创建你自己的动态网站了!祝你编码愉快!
