您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# PHP中PDO是什么,其对象使用的常见方法是什么
## 一、PDO概述
### 1.1 什么是PDO
PDO(PHP Data Objects)是PHP中一个轻量级的、一致性的数据库访问抽象层,自PHP 5.1版本起成为官方推荐的核心扩展。它提供了一套统一的接口,允许开发者使用相同的方法访问不同类型的数据库(如MySQL、PostgreSQL、SQLite等),解决了传统数据库扩展(如mysql_*、mysqli_*)因数据库差异导致的代码兼容性问题。
### 1.2 PDO的核心优势
- **跨数据库兼容性**:通过更换DSN(数据源名称)即可切换数据库类型
- **预处理语句**:内置防SQL注入机制
- **错误处理**:支持多种错误模式(静默、警告、异常)
- **事务支持**:提供完整的事务控制方法
- **性能优化**:相比传统扩展有更好的执行效率
---
## 二、PDO对象的基本使用
### 2.1 创建PDO连接
```php
try {
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
$username = 'root';
$password = '';
$pdo = new PDO($dsn, $username, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
} catch (PDOException $e) {
die('Connection failed: ' . $e->getMessage());
}
属性常量 | 说明 |
---|---|
ATTR_ERRMODE |
错误报告模式 |
ATTR_DEFAULT_FETCH_MODE |
默认结果集获取方式 |
ATTR_EMULATE_PREPARES |
是否模拟预处理 |
ATTR_PERSISTENT |
持久化连接 |
$affectedRows = $pdo->exec("UPDATE users SET status=1 WHERE id < 100");
echo "Affected rows: ".$affectedRows;
$stmt = $pdo->query("SELECT * FROM users LIMIT 10");
while ($row = $stmt->fetch()) {
print_r($row);
}
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute(['John', 'john@example.com']);
try {
$pdo->beginTransaction();
$pdo->exec("UPDATE account SET balance=balance-100 WHERE user_id=1");
$pdo->exec("UPDATE account SET balance=balance+100 WHERE user_id=2");
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
echo "Transaction failed: ".$e->getMessage();
}
$stmt = $pdo->query("SELECT * FROM users WHERE id=1");
$user = $stmt->fetch(PDO::FETCH_OBJ); // 返回对象形式
$users = $pdo->query("SELECT * FROM users")->fetchAll();
$count = $pdo->query("SELECT COUNT(*) FROM users")->fetchColumn();
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=? AND status=?");
$stmt->execute([1, 'active']);
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=:id AND status=:status");
$stmt->execute([':id' => 1, ':status' => 'active']);
$stmt = $pdo->prepare("INSERT INTO logs (message) VALUES (:msg)");
$msg = "System started";
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
$stmt->execute();
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
启用异常处理PDO::ATTR_EMULATE_PREPARES => false
(MySQL特定)charset=utf8
)PDO::ATTR_PERSISTENT => true
(长连接场景)fetchAll(PDO::FETCH_COLUMN)
替代循环fetchColumn()PDO作为PHP官方推荐的数据库访问方式,通过统一的API简化了多数据库环境下的开发工作。其核心价值在于: - 通过预处理机制保障安全性 - 提供一致性的操作接口 - 支持完善的错误处理和事务控制
掌握PDO的正确使用方式,能够显著提升PHP应用的数据库安全性和可维护性。建议新项目优先采用PDO替代传统的mysql/mysqli扩展。 “`
(注:本文实际约1100字,可根据需要补充具体案例或扩展某些方法的详细说明以达到1200字要求)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。