数据库抽象层 PDO

优质
小牛编辑
142浏览
2023-12-01

数据库抽象层 PDO

什么是 PDO

PDO(PHP Data Object),数据库访问抽象层,统一各种数据库的访问接口。

PDO支持的数据库有如下(数据来自 php 官方网站)

驱动名称支持的数据库
PDO_CUBRIDCubrid
PDO_DBLIBFreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRDFirebird/Interbase 6
PDO_IBMIBM DB2
PDO_INFORMIXIBM Informix Dynamic Server
PDO_MYSQLMySQL 3.x/4.x/5.x
PDO_OCIOracle Call Interface
PDO_ODBCODBC v3 (IBM DB2, unixODBC and win32 ODBC)
PDO_PGSQLPostgreSQL
PDO_SQLITESQLite 3 及 SQLite 2
PDO_SQLSRVMicrosoft SQL Server / SQL Azure
PDO_4D4D

PDO 安装与扩展

  • 配置 php.ini 配置文件,开启相应的扩展
extension = php_pdo.dll
  • 开启对应数据库的扩展,这里以 MySQL 为例。
extension = php_pdo_mysql.dll
  • 通过查看

    phpinfo();

    可以看到 PDO 扩展你的详细信息,内容如下:

PDO 的使用

  • 通过参数的形式连接数据库
<?php
try {
    $dsn = 'mysql:host=localhost;dbname=test'; // 数据源
    $username = 'root'; // 数据库用户名
    $passwd = 'aaaaaa'; // 数据库密码

    $pdo = new PDO($dsn, $username, $passwd);
    print_r($pdo); // 返回 PDO Object ( )

} catch (PDOException $e) {
    echo $e->getMessage();
}
  • 通过 URI 的形式连接数据库
<?php
try {
    $dsn = 'uri:file:///Applications/MAMP/htdocs/Study/Pdo/dsn.txt'; // 数据源 其中 /Applications/MAMP/htdocs/Study/Pdo/dsn.txt 为文件 dsn.txt 路径
    $username = 'root'; // 数据库用户名
    $passwd = 'aaaaaa'; // 数据库密码

    $pdo = new PDO($dsn, $username, $passwd);
    print_r($pdo); // 返回 PDO Object ( )

} catch (PDOException $e) {
    echo $e->getMessage();
}

其中需要配置一个单独的文件 dsn.txt,文件内容如

mysql:host=localhost;dbname=test

  • 通过配置文件的形式连接数据库

首先需要修改 PHP 的配置 php.ini ,新增如下代码

pdo.dsn.test = "mysql:host=localhost;dbname=test"

命名为 test ,连接本地的 test 数据库。

代码中使用

<?php

try {
    $dsn = 'test';  // 在 php.ini 中定义的名称
    $username = 'root'; // 数据库用户名
    $passwd = 'aaaaaa'; // 数据库密码

    $pdo = new PDO($dsn, $username, $passwd);
    print_r($pdo); // 返回 PDO Object ( )

} catch (PDOException $e) {
    echo $e->getMessage();
}