IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP - PDO - 学习/实践 -> 正文阅读

[PHP知识库]PHP - PDO - 学习/实践

1.应用场景

主要用于在PHP脚本中使用PDO与数据库交互~

2.学习/操作

1.文档阅读

https://www.php.net/manual/zh/refs.database.php

https://www.php.net/manual/zh/book.pdo.php

https://www.php.net/manual/zh/pdo.drivers.php

https://www.php.net/manual/en/ref.pdo-odbc.php?// PDO_ODBC

https://www.runoob.com/php/php-pdo.html? //?PHP PDO

https://dev.mysql.com/doc/connectors/en/apis-php-pdo-mysql.html?// mysql - pdo

2.整理输出

2.1 简介

PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务。

PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。

PHP 附带了 PDO。

2.2 创建PDO实例 - 连接数据库

文档参考:

https://www.php.net/manual/zh/pdo.connections.php?//?连接与连接管理

1. 连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。

构造函数接收用于指定数据库源(所谓的 DSN)以及可能还包括用户名和密码(如果有的话)的参数。

2. 连接数据成功后,返回一个 PDO 类的实例给脚本,此连接在 PDO 对象的生存周期中保持活动

要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 null 值给对象变量。如果不明确地这么做,PHP 在脚本结束时会自动关闭连接

示例 #1?连接,执行sql脚本,关闭连接,以及处理连接错误

<?php
try {
? ? $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

? ? //?在此使用连接
? ? foreach($dbh->query('SELECT * from FOO') as $row) {
? ? ? ? print_r($row);
? ? }

? ??//?现在运行完成,在此关闭连接
? ? $dbh = null;
} catch (PDOException $e) {
? ? print "Error!: " . $e->getMessage() . "<br/>";
? ? die();
}
?>

警告

如果应用程序不在 PDO 构造函数中捕获异常,zend 引擎采取的默认动作是结束脚本并显示一个回溯跟踪,此回溯跟踪可能泄漏完整的数据库连接细节,包括用户名和密码。因此有责任去显式(通过 catch 语句)或隐式(通过 set_exception_handler() )地捕获异常。

3. 很多 web 应用程序通过使用到数据库服务的持久连接获得好处。

持久连接在脚本结束后不会被关闭,且被缓存,当另一个使用相同凭证的脚本连接请求时被重用

持久连接缓存可以避免每次脚本需要与数据库会话时建立一个新连接的开销,从而让 web 应用程序更快。

示例 #2?持久化连接

<?php
$dbh?=?new?PDO('mysql:host=localhost;dbname=test',?$user,?$pass,?array(
????PDO::ATTR_PERSISTENT?=>?true
));
?>

注意:

如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT

如果是在对象初始化之后PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。

注意:

如果使用 PDO ODBC 驱动且 ODBC 库支持 ODBC 连接池(有unixODBC 和 Windows 两种做法;可能会有更多),建议不要使用持久的 PDO 连接,而是把连接缓存留给 ODBC 连接池层处理。

ODBC 连接池在进程中与其他模块共享;

如果要求 PDO 缓存连接,则此连接绝不会被返回到 ODBC 连接池,导致创建额外的连接来服务其他模块。

https://www.php.net/manual/en/ref.pdo-odbc.php?// PDO_ODBC

do_odbc.connection_pooling?PDO_ODBC有连接池概念,但是TBD

2.3 TBD

后续补充

...

3.问题/补充

1. 测试相关PDO的属性设置

<?php

// 其中SQL语句,有模拟数据表

$sql = <<<SQL
? ? SELECT ALL
? ? ? ? c1, -- For result indexing
? ? ? ? c1, c2
? ? FROM (
? ? ? ? VALUES
? ? ? ? ? ? ROW('ID-1', 'Value 1'),
? ? ? ? ? ? ROW('ID-2', 'Value 2a'),
? ? ? ? ? ? ROW('ID-2', 'Value 2b'),
? ? ? ? ? ? ROW('ID-3', 'Value 3')
? ? ) AS t (c1, c2);

? ? SQL;

$result = $pdo->query($sql);
print_r($result->fetchAll(PDO::FETCH_UNIQUE));

/*
Gives :
ID-1 => [c1 => ID-1, ?c2 => Value 1]
ID-2 => [c1 => ID-2b, c2 => Value 2b]
ID-3 => [c1 => ID-3, ?c2 => Value 3]
*/

?>

4.参考

https://www.php.net/manual/zh/refs.database.php

https://www.php.net/manual/zh/book.pdo.php

https://www.php.net/manual/zh/pdo.drivers.php

https://www.runoob.com/php/php-pdo.html? //?PHP PDO

https://dev.mysql.com/doc/connectors/en/apis-php-pdo-mysql.html?// mysql - pdo

后续补充

...

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 10:58:33  更:2021-07-16 11:00:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 15:54:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码