PHP PDO数据库操作教程
简介
PDO(PHP Data Objects)是PHP中用于访问数据库的轻量级、一致性的接口。PDO 提供了一个数据访问抽象层,这意味着,无论使用哪种数据库(MySQL、PostgreSQL、SQLite等),都可以通过一致的函数和方法来访问数据库。
安装与配置
PDO 是 PHP 的核心扩展,默认情况下是启用的。如果未启用,可以在 `php.ini` 文件中找到并取消注释以下行:
;extension=pdo_mysql ;extension=pdo_pgsql ;extension=pdo_sqlite
去掉行首的分号(`;`)即可启用相应的PDO扩展。
连接到数据库
使用 PDO 连接到数据库非常简单。下面是一个连接到 MySQL 数据库的示例:
<?php try { $dsn = 'mysql:host=localhost;dbname=testdb'; $username = 'root'; $password = ''; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $pdo = new PDO($dsn, $username, $password, $options); echo "连接成功"; } catch (PDOException $e) { echo "连接失败: " . $e->getMessage(); } ?>
执行查询
使用 PDO 执行查询也非常简单。以下是一个简单的 SELECT 查询示例:
<?php try { $stmt = $pdo->query("SELECT * FROM users"); while ($row = $stmt->fetch()) { echo $row['username'] . " - " . $row['email'] . "<br/>"; } } catch (PDOException $e) { echo "查询失败: " . $e->getMessage(); } ?>
预处理语句
预处理语句(Prepared Statements)可以防止 SQL 注入攻击,并且可以提高性能。以下是一个预处理语句的示例:
<?php try { $stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id"); $stmt->bindParam(':id', $id, PDO::PARAM_INT); $id = 1; $stmt->execute(); $user = $stmt->fetch(); echo "用户名: " . $user['username'] . "<br/>"; echo "邮箱: " . $user['email']; } catch (PDOException $e) { echo "查询失败: " . $e->getMessage(); } ?>
插入数据
使用 PDO 插入数据也非常简单。以下是一个插入数据的示例:
<?php try { $stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)"); $stmt->bindParam(':username', $username, PDO::PARAM_STR); $stmt->bindParam(':email', $email, PDO::PARAM_STR); $username = '新用户'; $email = 'newuser@example.com'; $stmt->execute(); echo "插入成功"; } catch (PDOException $e) { echo "插入失败: " . $e->getMessage(); } ?>
总结
PDO 是一个非常强大且灵活的数据库访问抽象层,可以帮助你轻松地进行各种数据库操作。通过使用预处理语句,你还可以有效地防止 SQL 注入攻击。希望这篇教程对你有所帮助!