PHP数据库开发从入门到实战,轻松搞定数据交互与API接口开发

2026-07-23 10:21:17 134阅读
面向PHP数据库开发零基础入门者、希望快速入门后端接口的开发者,采用从基础到落地API接口的清晰递进逻辑,开篇讲解PHP与MySQL、SQLite的安全连接方式,系统夯实增删改查(CRUD)数据交互核心,同步普及SQL注入防护、数据输入输出验证等规范;后半段结合常见小项目场景,手把手教读者构建标准PHP数据库API接口,助力轻松打通前后端数据链路。

PHP与数据库的不解之缘

在Web开发的世界里,“动态内容”是区别于静态网页的关键——从电商网站的商品列表、社交平台的用户动态,到博客系统的文章存储,都离不开数据的持久化存储与快速读取,而PHP作为流行的后端开发语言,与数据库的配合堪称“黄金搭档”:PHP负责处理业务逻辑,数据库负责存储和管理数据,二者结合才能构建出功能完整的动态网站。

无论你是刚接触PHP的新手,还是想巩固数据库交互技能的开发者,掌握PHP与数据库的连接、操作及安全实践,都是后端开发的必修功课。

PHP数据库开发从入门到实战,轻松搞定数据交互与API接口开发

PHP常用数据库盘点

PHP支持几乎所有主流数据库,其中最常用的有以下几种:

  1. MySQL/MariaDB:绝对的“国民数据库”,开源免费、性能优异、社区活跃,与PHP的兼容性最好,是中小型项目的首选。
  2. PostgreSQL:功能强大的开源关系型数据库,支持复杂查询和事务,适合对数据完整性要求高的项目。
  3. SQLite:轻量级文件型数据库,无需额外配置服务器,适合小型应用或原型开发(如移动端后端、本地工具)。
  4. MongoDB:非关系型数据库(NoSQL),适合存储结构化不强的数据(如日志、JSON格式数据),PHP也有对应的扩展支持。

本文将以MySQL为例展开讲解,毕竟它是PHP开发者最常用的数据库。

PHP连接数据库的主流方式

PHP连接MySQL主要有三种方式,但其中mysql扩展已在PHP 7.0中彻底废弃,因此我们只需掌握两种推荐方式mysqliPDO

mysqli扩展(MySQL Improved)

mysqli是MySQL的增强版扩展,支持面向过程和面向对象两种写法,仅适用于MySQL数据库。

(1)面向过程写法(简单易上手)

<?php
// 数据库配置
$host = 'localhost';    // 数据库地址
$user = 'root';         // 数据库用户名
$pwd = 'your_password'; // 数据库密码
$dbname = 'test_db';    // 数据库名
// 1. 连接数据库
$conn = mysqli_connect($host, $user, $pwd, $dbname);
// 2. 检查连接是否成功
if (!$conn) {
    die("连接失败:" . mysqli_connect_error());
}
// 3. 设置字符集(防止乱码)
mysqli_set_charset($conn, 'utf8mb4');
echo "连接成功!";
// 4. 关闭连接(可选,脚本结束时会自动关闭)
// mysqli_close($conn);
?>

(2)面向对象写法(更规范)

<?php
$host = 'localhost';
$user = 'root';
$pwd = 'your_password';
$dbname = 'test_db';
// 连接数据库
$conn = new mysqli($host, $user, $pwd, $dbname);
// 检查连接
if ($conn->connect_error) {
    die("连接失败:" . $conn->connect_error);
}
// 设置字符集
$conn->set_charset('utf8mb4');
echo "连接成功!";
?>

PDO扩展(PHP Data Objects)

PDO是PHP的“数据库抽象层”,支持多种数据库(MySQL、PostgreSQL、SQLite等),代码可移植性强,且更安全。

<?php
$host = 'localhost';
$user = 'root';
$pwd = 'your_password';
$dbname = 'test_db';
try {
    // 连接数据库(用try-catch处理异常)
    $conn = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $pwd);
    // 设置PDO错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "连接成功!";
} catch(PDOException $e) {
    die("连接失败:" . $e->getMessage());
}
?>

推荐优先用PDO:它不仅支持多数据库,还内置了更完善的安全机制,是现代PHP开发的主流选择。

安全第一:预防SQL注入的预处理语句

在操作数据库时,最常见的安全漏洞是SQL注入——攻击者通过构造恶意SQL语句,窃取或篡改数据。
如果你的查询语句是:

$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE id = $id";

攻击者若传入id=1 OR 1=1,就会查询出所有用户数据,非常危险。

预处理语句(Prepared Statements) 能彻底解决这个问题:它先将SQL语句的“结构”和“数据”分离,数据会被当作纯文本处理,不会被解析为SQL命令。

PDO的预处理语句示例

<?php
// 假设已连接数据库,$conn是PDO对象
// 1. 准备SQL语句(用:name占位符)
$sql = "INSERT INTO users (username, email) VALUES (:username, :email)";
$stmt = $conn->prepare($sql);
// 2. 绑定参数(数据会自动转义)
$username = '张三';
$email = 'zhangsan@example.com';
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
// 3. 执行语句
$stmt->execute();
echo "插入成功,新记录ID:" . $conn->lastInsertId();
?>

mysqli的预处理语句示例

<?php
// 假设已连接数据库,$conn是mysqli对象
// 1. 准备SQL语句(用?占位符)
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $conn->prepare($sql);
// 2. 绑定参数(i表示整数,s表示字符串,d表示小数,b表示二进制)
$id = 1;
$stmt->bind_param('i', $id);
// 3. 执行并获取结果
$stmt->execute();
$result = $stmt->get_result();
// 4. 遍历数据
while ($row = $result->fetch_assoc()) {
    echo "用户名:" . $row['username'] . "<br>";
}
?>

实战演练:简单的用户数据管理

我们来做一个小功能:创建用户表、插入用户、查询用户列表,用PDO实现。

步骤1:先在MySQL中创建数据库和表

先手动执行以下SQL(或用phpMyAdmin):

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

步骤2:PHP实现增查功能

<?php
// 数据库配置
$host = 'localhost';
$user = 'root';
$pwd = 'your_password';
$dbname = 'test_db';
try {
    // 连接数据库
    $conn = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $pwd);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // 1. 插入用户
    $insertSql = "INSERT INTO users (username, email) VALUES (:username, :email)";
    $insertStmt = $conn->prepare($insertSql);
    $insertStmt->execute([
        ':username' => '李四',
        ':email' => 'lisi@example.com'
    ]);
    echo "插入用户成功!<br>";
    // 2. 查询所有用户
    $selectSql = "SELECT * FROM users";
    $selectStmt = $conn->prepare($selectSql);
    $selectStmt->execute();
    $users = $selectStmt->fetchAll(PDO::FETCH_ASSOC);
    // 3. 显示用户列表
    echo "<h3>用户列表:</h3>";
    echo "<table border='1'>";
    echo "<tr><th>ID</th><th>用户名</th><th>邮箱</th><th>创建时间</th></tr>";
    foreach ($users as $user) {
        echo "<tr>";
        echo "<td>{$user['id']}</td>";
        echo "<td>{$user['username']}</td>";
        echo "<td>{$user['email']}</td>";
        echo "<td>{$user['create_time']}</td>";
        echo "</tr>";
    }
    echo "</table>";
} catch(PDOException $e) {
    echo "错误:" . $e->getMessage();
}
?>

运行这个脚本,你就能看到用户插入成功,并在表格中显示用户列表啦!

PHP数据库开发最佳实践

  1. 永远不要用root用户连接PHP:创建一个权限仅为“增删改查”的专用数据库用户,降低风险。
  2. 错误信息不要暴露给用户:生产环境中,不要直接输出mysqli_connect_error()或异常信息,应记录到日志文件中。
  3. 及时关闭连接(非必须但建议):虽然PHP脚本结束会自动关闭,但长时间运行的脚本(如队列)最好手动关闭。
  4. 统一字符集:数据库、表、PHP连接都用utf8mb4(支持emoji),避免乱码。
  5. 避免频繁连接:可以用“单例模式”复用数据库连接,减少性能开销。

PHP与数据库的交互是后端开发的基础,核心在于“连接-操作-安全”三个环节,从本文的入门示例开始,你可以逐步尝试更复杂的功能:比如用户注册登录、数据分页查询、事务处理(确保多条SQL要么全部成功,要么全部失败)。

实践是最好的老师,动手写几个小项目,你就能快速掌握PHP数据库开发的精髓!


希望这篇文章能帮你开启PHP数据库开发的大门~ 有问题可以在评论区交流哦!

文章版权声明:除非注明,否则均为亚朵原创文章,转载或复制请以超链接形式并注明出处。