0Pricing
PHP Academy · 课时

使用 PDO

使用 PHP 数据对象(PDO)与数据库交互

使用 PDO 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 6 节课,共 6 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 6 节课。

PDO 概览

使用 PDO

欢迎来到下一课!在本课中,您将学习如何使用 PDO(PHP 数据对象)进行数据库交互。PDO 是一种灵活且安全的数据库连接与操作方式。让我们深入了解吧!

使用 PDO — 插图 1

什么是 PDO?

什么是 PDO?

PDO(PHP 数据对象)是一个数据库访问层,为使用不同数据库系统提供统一的接口。它支持多种数据库,例如 MySQL、PostgreSQL、SQLite 等。

主要特性:

  • 数据库独立性(可与多种数据库类型配合使用)。
  • 内置对预处理语句的支持。
  • 高级错误处理选项。

提示:PDO 是构建安全且可扩展的网络应用程序的理想选择。

使用 PDO 连接数据库

使用 PDO 连接数据库

要使用 PDO 连接数据库,您需要:

  • 数据源名称(DSN),其中包括数据库类型、主机和名称。
  • 有效的用户名和密码。

示例:

提示:敏感凭据请使用环境变量或配置文件。

<?php
  $dsn = "mysql:host=localhost;dbname=testdb";
  $username = "root";
  $password = "";

  try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully!";
  } catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
  }
?>

执行查询

执行查询

PDO 提供了两种执行查询的主要方法:

  • exec():用于不返回结果的语句(例如 INSERT、UPDATE)。
  • query():用于返回结果的语句(例如 SELECT)。

示例:

<?php
  // Insert a record
  $pdo->exec("INSERT INTO users (name, email) VALUES ('Alice', 'alice@mail.com')");

  // Retrieve records
  $stmt = $pdo->query("SELECT * FROM users");
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "Name: " . $row["name"] . ", Email: " . $row["email"] . "<br>";
  }
?>

使用预处理语句

使用预处理语句

预处理语句对于安全高效的数据库交互至关重要。示例:

提示:使用占位符(:email)来防止 SQL 注入。

<?php
  $sql = "SELECT * FROM users WHERE email = :email";
  $stmt = $pdo->prepare($sql);
  $stmt->execute(["email" => "alice@mail.com"]);
  $user = $stmt->fetch(PDO::FETCH_ASSOC);

  echo "Name: " . $user["name"];
?>

PDO 中的错误处理

PDO 中的错误处理

PDO 支持三种错误处理模式:

  • ERRMODE_SILENT:必须手动检查错误。
  • ERRMODE_WARNING:错误会触发 PHP 警告。
  • ERRMODE_EXCEPTION:错误会抛出异常(推荐)。

示例:

<?php
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  try {
    $pdo->exec("INVALID SQL STATEMENT");
  } catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
  }
?>

获取数据

获取数据

PDO 提供了多种获取数据的方法:

  • fetch():获取单行数据。
  • fetchAll():获取所有行。
  • fetchColumn():获取单列值。

示例:

<?php
  $stmt = $pdo->query("SELECT name FROM users");
  while ($name = $stmt->fetchColumn()) {
    echo "User: " . $name . "<br>";
  }
?>

事务管理

事务管理

使用事务将多个查询作为一个单元执行。示例:

提示:使用事务确保数据完整性。

<?php
  try {
    $pdo->beginTransaction();

    $pdo->exec("INSERT INTO users (name, email) VALUES ('Bob', 'bob@mail.com')");
    $pdo->exec("INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@mail.com')");

    $pdo->commit();
    echo "Transaction successful!";
  } catch (PDOException $e) {
    $pdo->rollBack();
    echo "Transaction failed: " . $e->getMessage();
  }
?>

做得很好!

做得很好!

恭喜您!您已经学会了如何使用 PDO 进行安全高效的数据库交互,包括连接数据库、执行查询和管理事务。在下一课中,我们将探索使用 PDO 的高级 SQL 查询技术。让我们继续编写代码吧!

使用 PDO — 插图 10

常见问题解答

「使用 PDO」课时是免费的吗?

是的 — 「使用 PDO」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 6 节课。

「使用 PDO」这节课中我会学到什么?

使用 PHP 数据对象(PDO)与数据库交互 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 PHP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 6 节课,共 6 节。

「使用 PDO」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 PHP Academy 课中编写并运行代码吗?

能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 数据库入门
  2. 连接 MySQL 数据库
  3. 管理表格
  4. 执行 CRUD 操作
  5. 预处理语句
  6. 使用 PDO
← 返回 PHP Academy