本文概述
- 什么是PDO?
- PDO的优势
- 使用PDO的好处
- PDO类别
- PDO支持的数据库
- PDO与MySQLi的比较
- 在PDO或MySQLi之间应该首选哪个?
- 需求
- 安装过程
- 使用PDO
- 数据库连接
- 处理连接错误
- 关闭数据库连接
什么是PDO? PDO指PHP数据对象, 它是PHP扩展, 它定义了轻量且一致的接口, 用于访问PHP中的数据库。它是一组PHP扩展, 提供了核心的PDO类和特定于数据库的驱动程序。每个数据库驱动程序都可以将特定于数据库的功能公开为实现PDO接口的常规扩展功能。
注意:我们不能通过使用PDO扩展本身来执行任何类型的数据库功能。要访问数据库服务器, 我们必须使用特定于数据库的PDO驱动程序。 PDO主要关注数据访问抽象, 而不是数据库抽象。它提供了数据访问抽象层, 这意味着, 无论我们使用哪个数据库, 我们都必须使用该数据库提供的相同功能来发出查询和获取数据。 PDO不提供数据抽象, 因为它不重写SQL或模拟缺少的功能。
PDO的优势 【PHP PDO介绍和环境部署】PDO提供了多种处理对象的方法, 并可检索准备好的语句, 从而使工作变得更加容易。它是PHP中的数据库访问工具, 通过它我们可以跨多个数据库进行统一访问。
PDO允许在不同的数据库和平台之间进行相对无缝的切换, 这可以通过更改连接字符串轻松完成。它不支持特定于数据库的语法。
PDO的一些优点如下:
数据库支持
PDO扩展名可以访问为PDO驱动程序编写的任何数据库。有几种可用的PDO驱动程序, 它们可用于FreeTDS, Microsoft SQL Server, Sybase, IBM DB2, Oracle调用接口, Firebird / Interbase 6和PostgreSQL数据库等。
驱动程序并非在每个系统中都自动可用, 因此我们必须找到可用的驱动程序并在需要时添加它们。
数据库连接
有多种语法可用于建立数据库连接。这些语法取决于特定的数据库。使用PDO时, 必须将操作包装在try / catch块中, 并利用异常技术。
通常, 只需要创建一个连接, 就可以通过将数据库编程为空来关闭这些连接。
错误处理
PDO允许使用异常进行错误处理。为了产生异常, 可以将PDO强制设置为相关的错误模式属性。
共有三种错误模式, 即” 静音” (默认), “ 警告” 和” 异常” 。警告和异常在DRY编程中更有用。
- 静音-这是默认错误模式。
- 警告-这对于调试很有用。
- 例外-此模式允许进行优美的错误处理, 同时隐藏一个人可能用来利用你的系统的数据。
PDO将常用的插入和更新数据库操作简化为两步过程, 即
准备> > [绑定] > > 执行。
通过这种方法, 我们可以充分利用PDO的准备好的语句, 该语句通过SQL注入防止恶意攻击。
预准备语句是预编译的SQL语句, 可以通过将该数据发送到服务器来多次执行。在占位符中使用的该数据会自动受到SQL注入攻击的保护。
使用PDO的好处 PDO是本机数据库驱动程序。使用PDO有一些好处, 如下所示:
- 可用性-它包含许多辅助功能, 可进行自动例行操作。
- 可重用性-它提供了访问多个数据库的统一API。
- 安全性-它使用准备好的语句来防止SQL注入。预准备语句是预编译的SQL语句, 它将SQL语句的指令与数据分开。
- PDO-表示PHP与数据库之间的连接。
- PDOStatement-它代表准备好的语句, 并在语句执行后设置关联的结果。
- PDOException-它表示由PDO引发的错误。
- MySQL
- PostgreSQL的
- 甲骨文
- 火鸟
- MS SQL服务器
- Sybase公司
- Informix
- IBM公司
- FreeTDS
- SQLite的
- 笨拙的
- 4D
Features | PDO | MySQLi |
---|---|---|
DB Support | 12种不同的驱动程序 | MySQL only |
Connection | Easy | Easy |
API | OOP | OOP +程序 |
Performance | Fast | Fast |
Named Parameter | Yes | No |
Object mapping | Yes | Yes |
储存程序 | Yes | Yes |
客户端准备的语句 | Yes | No |
Security | 比MySQLi更安全。 | 安全但不超过PDO。 |
- 如前所述, PDO可在12种不同的数据库系统上运行, 而MySQL只能与MySQL数据库一起使用。因此, 如果我们想将项目切换到另一个数据库, 则PDO使其变得容易。在MySQLi中, 我们必须重写整个代码。
- PDO和MySQLi都是面向对象的, 但是MySQLi还提供了过程API。两者都支持预准备语句。预备语句对于Web应用程序安全性很重要, 因为它可以防止SQL注入。
安装过程 步骤1:从此处https://www.apachefriends.org/download.html下载适用于Windows, Linux和MacOS等不同平台的最新XAMPP服务器。
文章图片
注意:这里我们将仅讨论Windows OS的安装过程。 步骤2:按照以下步骤在系统上安装XAMPP服务器。
文章图片
步骤3:选择要安装的组件, 然后单击Next(下一步)按钮。
文章图片
步骤4:在要安装XAMPP的位置创建一个名为xampp的新文件夹。
文章图片
第5步:在此处单击下一步, 然后继续。 XAMPP服务器的安装将从此处开始。
文章图片
步骤6:成功安装XAMPP。单击完成按钮。
文章图片
步骤7:选择首选语言。
文章图片
步骤8:从此处运行Apache服务器和MySQL(按照给定的屏幕截图)。
文章图片
步骤9:现在, 从C:/xampp/php/php.ini(已安装XAMPP的位置)中打开php.ini, 并取消注释扩展名” php_pdo_mysql.dll” 和” php_pdo.dll” (如果使用的是MySQL)数据库)或” php_pdo_oci.dll” (如果正在使用Oracle数据库)。现在, 开始使用数据库。在PHP 5.1更高版本中, 已经设置了它。
使用PDO 首先, 我们需要创建一个数据库, 因此从此处创建名为myDB的数据库。
文章图片
数据库连接 与数据库交互总是需要数据库连接。因此, 我们需要知道访问数据库的标识符, 即数据库的位置, 数据库名称, 用户名和密码。
现在, 在任何文本编辑器(例如记事本或notepad ++)中使用PDO创建数据库连接程序, 并使用coonection.php名称保存它。使用localhost / 80在XAMPP服务器上运行它。
例子
<
?php $dbHost="localhost";
$dbName="myDB";
$dbUser="root";
//by default root is user name. $dbPassword="";
//password is blank by default try{$dbConn= new PDO("mysql:host=$dbHost;
dbname=$dbName", $dbUser, $dbPassword);
Echo "Successfully connected with myDB database";
} catch(Exception $e){ Echo "Connection failed" . $e->
getMessage();
}?>
输出
使用以下URL localhost / Xampp / pdoexample / connection.php /或在保存程序的位置在服务器上运行它。
文章图片
处理连接错误 如果存在任何连接错误, 则将引发PDOException对象。如果要处理错误条件, 我们可以捕获异常, 或者也可以将其留给可以由set_exception_handler()函数设置的全局异常处理程序。
例子
在此示例中, dbUser(user-id)是错误的, 因此它将抛出异常, 正如我们在输出中看到的那样。
<
?php $dbHost="localhost";
$dbName="myDB";
$dbUser="rroot";
$dbPassword="";
try{$dbConn= new PDO("mysql:host=$dbHost;
dbname=$dbName", $dbUser, $dbPassword);
//Set the PDO error mode to exception.$conn->
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Echo "Successfully connected with myDB database";
} catch(Exception $e){ Echo "Connection failed" . $e->
getMessage();
}?>
文章图片
关闭数据库连接
<
?php $dbHost="localhost";
$dbName="myDB";
$dbUser="root";
//by default root is user name. $dbPassword="";
//password is blank by default try{$dbConn= new PDO("mysql:host=$dbHost;
dbname=$dbName", $dbUser, $dbPassword);
Echo "Successfully connected with myDB database";
} catch(Exception $e){ Echo "Connection failed" . $e->
getMessage();
}// this command close the connection. $dbConn = null;
?>
输出
文章图片
推荐阅读
- PHP程序实例
- PHP preg_replace()函数
- PHP preg_match()函数
- PHP参数化函数
- PHP函数(获取有关类和对象的信息)
- PHP运算符解释和用法
- PHP类型提示
- PHP使用重载
- PHP使用接口