php有哪些pdo类的方法

发布时间:2021-07-19 09:30:39 作者:chen
来源:亿速云 阅读:514
# PHP有哪些PDO类的方法

## 目录
1. [PDO简介](#pdo简介)
2. [PDO连接数据库](#pdo连接数据库)
3. [PDO核心方法详解](#pdo核心方法详解)
   - [执行SQL语句](#执行sql语句)
   - [预处理语句](#预处理语句)
   - [事务处理](#事务处理)
   - [错误处理](#错误处理)
4. [PDOStatement类方法](#pdostatement类方法)
5. [实用技巧与最佳实践](#实用技巧与最佳实践)
6. [总结](#总结)

---

## PDO简介
PHP Data Objects(PDO)是PHP提供的数据库访问抽象层,支持多种数据库(MySQL、PostgreSQL、SQLite等)。相比传统的`mysql_*`函数,PDO具有:
- 跨数据库兼容性
- 预处理语句防SQL注入
- 面向对象接口
- 错误处理机制

---

## PDO连接数据库
```php
<?php
try {
    $dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
    $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());
}
?>

PDO核心方法详解

执行SQL语句

方法 描述 示例
exec() 执行无返回结果的SQL(返回受影响行数) $count = $pdo->exec("DELETE FROM users");
query() 执行有返回结果的SQL(返回PDOStatement对象) $stmt = $pdo->query("SELECT * FROM users");
lastInsertId() 获取最后插入的ID $id = $pdo->lastInsertId();

预处理语句

$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute(['John', 'john@example.com']);

// 命名参数方式
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute([':id' => 42]);

事务处理

try {
    $pdo->beginTransaction();
    $pdo->exec("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1");
    $pdo->exec("UPDATE accounts SET balance = balance + 100 WHERE user_id = 2");
    $pdo->commit();
} catch (Exception $e) {
    $pdo->rollBack();
    echo "Transaction failed: " . $e->getMessage();
}

错误处理

方法/常量 说明
PDO::ERRMODE_SILENT 静默模式(默认)
PDO::ERRMODE_WARNING 产生警告
PDO::ERRMODE_EXCEPTION 抛出异常
errorCode() 获取错误码
errorInfo() 获取错误信息数组

PDOStatement类方法

当执行query()prepare()后返回的对象方法:

方法 描述 示例
execute() 执行预处理语句 $stmt->execute();
fetch() 获取单行结果 $row = $stmt->fetch();
fetchAll() 获取所有结果 $rows = $stmt->fetchAll();
bindParam() 绑定参数到变量 $stmt->bindParam(':id', $id);
rowCount() 返回受影响行数 $count = $stmt->rowCount();
setFetchMode() 设置获取模式 $stmt->setFetchMode(PDO::FETCH_OBJ);

常用获取模式: - PDO::FETCH_ASSOC:关联数组 - PDO::FETCH_NUM:数字索引数组 - PDO::FETCH_OBJ:对象形式 - PDO::FETCH_CLASS:映射到指定类


实用技巧与最佳实践

1. 批量插入高效方案

$data = [
    ['Alice', 'alice@example.com'],
    ['Bob', 'bob@example.com']
];

$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$pdo->beginTransaction();
foreach ($data as $row) {
    $stmt->execute($row);
}
$pdo->commit();

2. 结果集分页处理

$page = 2; $perPage = 10;
$stmt = $pdo->prepare("SELECT * FROM posts LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', (int)$perPage, PDO::PARAM_INT);
$stmt->bindValue(':offset', (int)(($page-1)*$perPage), PDO::PARAM_INT);
$stmt->execute();

3. 安全注意事项


总结

PDO提供的主要方法包括:

连接相关: - __construct() - getAttribute()/setAttribute()

SQL执行: - exec() - query() - prepare() - lastInsertId()

事务控制: - beginTransaction() - commit() - rollBack()

错误处理: - errorCode() - errorInfo()

结合PDOStatement类的方法,可以构建安全高效的数据库操作层。建议始终: 1. 使用异常模式处理错误 2. 采用预处理语句防注入 3. 根据场景选择合适的获取模式

通过合理运用这些方法,可以显著提升PHP应用的数据库安全性和可维护性。 “`

(注:实际字符数约2500字,完整2900字版本需扩展每个方法的详细示例和更多使用场景分析)

推荐阅读:
  1. 如何使用php+pdo实现的购物车类
  2. PHP及PDO的配置方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:微信小程序Server端环境配置的示例分析

下一篇:python中PaddleOCR库的用法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》