搜索
首页专题php mysql通过PDO扩展与MySQL数据库交互实现基本使用

通过PDO扩展与MySQL数据库交互实现基本使用

相关学习推荐:mysql教程php编程

在上篇教程中,给大家介绍了如何通过 PHP 内置的 Mysqli 扩展与 MySQL 数据库交互,今天我们来看看另一个 PHP 内置的数据库扩展 —— PDO,其全称是 PHP Data Objects,即 PHP 数据对象。

PDO 简介与安装

PDO 为 PHP 访问数据库定义了一个轻量级的一致接口,因此它提供的是一个数据访问抽象层,本身并不能实现任何数据库交互功能,必须使用一个具体数据库的 PDO 驱动来访问数据库服务,这些具体数据库驱动包括 MySQL、PostgreSQL、SQLite、SQL Server、Oracle 等,因此 PDO 是一个更加标准、更加通用的数据库扩展,而且完全是面向对象风格的,目前,在各个主流 PHP 框架中,PDO 已经成为了构建数据库交互的基础组件,包括 Laravel 框架,也是基于 PDO 扩展提供数据库访问功能。

我们之前推荐的 PHP 本地集成开发环境都集成了对 PDO 扩展的支持(以下是 Laragon 预装的 PHP 扩展):

PHP 扩展

并且可以看到,除了 PDO 扩展外,还有一个与之匹配的具体数据库扩展 pdo_mysql,有了这个具体扩展,才能访问 MySQL 数据库。另外,PDO 提供了统一的数据库访问接口,所以实现了 PDO 接口的具体数据库扩展可以通过完全一样的方法访问数据库,这样一来,如果应用需要切换数据库,就不需要对数据库操作代码进行重构,仅凭这一点,就可以扔掉 MySQLi 扩展,投入 PDO 的怀抱了。

如果安装过 Laradock,可以启动 workspace 容器,然后查看其预装的 PHP 扩展,可以看到,它包含更多的具体 PDO 数据库驱动支持:

PHP 扩展

其中 pdo_pgsql 表示 PostgresSQL 数据库驱动,pdo_sqlite 表示 SQLite 数据库驱动。

建立数据库连接与基本查询

在我们的教程中,还是选择以 MySQL 为例进行演示。

要通过 PDO 扩展建立数据库连接,直接实例化 PDO 对象即可,我们编写一段简单的示例代码如下(在 php_learning/mysql 目录下新建 pdo.php 存储代码):

<?php

// 设置连接属性
$dsn = &#39;mysql:host=127.0.0.1;port=3306;dbname=test;charset=utf8mb4&#39;;
$user = &#39;root&#39;;
$pass = &#39;root&#39;;

try {
    // 建立连接
    $pdo = new PDO($dsn, $user, $pass);
    // 执行 SQL 查询
    $sql = $pdo->quote(&#39;SELECT * FROM `post` ORDER BY `id` DESC&#39;);
    $res = $pdo->query($sql);
    // 打印查询结果
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    foreach ($res as $row) {
        print_r($row);
    }
} catch (PDOException $exception) {
    // 如果数据库操作出现异常,则捕获并打印
    printf("Error: %s\n", $exception->getMessage());
} finally {
    // 释放 PDO 连接实例
    $pdo = null;
}

在实例化 PDO 对象创建数据库连接时,至少需要传入三个字符串类型参数,第一个参数包含了数据库主机信息,比如数据库驱动类型(这里是 mysql)、IP地址(本地地址是 127.0.0.1)、端口号(可选,默认是 3306)、要连接的数据库名称(test)、字符编码信息(utf8mb4)等,第二个参数是用户名,第三个参数是密码。

接下来,我们就可以调用 PDO 对象实例 $pdo 上的 query 方法执行指定 SQL 语句与数据库进行交互了(增删改查),不过在此之前,我们先调用了 quote 方法对查询 SQL 语句进行转义,该函数的功能类似 mysqli_escape_string

执行完 SQL 查询后,会返回一个查询结果集,可以通过循环遍历打印该结果。

此外,通过 PDO 扩展进行数据库连接和查询操作如果出现错误,会抛出异常,为了增加程序的健壮性,我们在通过 try...catch... 语句捕获 PDOException 异常,并打印错误信息,最后通过 finally 语句释放 PDO 对象实例,因为该语句块不管是否抛出异常都会执行。

运行 php -S localhost:9000 启动内置 HTTP 服务器进行测试,在浏览器中访问 http://localhost:9000/mysql/pdo.php,即可看到正常的打印结果:

数据库查询结果

我们修改下上述代码中的连接信息,比如将密码值调整为 test,这个时候就会捕获到 PDO 异常,并打印错误消息:

数据库连接出错

注:错误信息中的 IP 地址是 MySQL Docker 容器内部的 IP 地址。可以忽略,这个报错是密码错误,而不是 IP 地址的问题。

想了解更多相关文章,敬请关注php mysql栏目!

以上是通过PDO扩展与MySQL数据库交互实现基本使用的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:xueyuanjun。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。