PHP PDO介绍和环境部署

本文概述

  • 什么是PDO?
  • PDO的优势
  • 使用PDO的好处
  • PDO类别
  • PDO支持的数据库
  • PDO与MySQLi的比较
  • 在PDO或MySQLi之间应该首选哪个?
  • 需求
  • 安装过程
  • 使用PDO
  • 数据库连接
  • 处理连接错误
  • 关闭数据库连接
PHP是一种开源通用脚本语言, 被广泛用于创建动态和交互式网页。 PHP可以访问各种关系数据库管理系统, 例如MYSQL, SQLite和PostgreSQL。 PHP 5.1版本提供了一个新的数据库连接抽象库, 即PHP数据对象(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编程中更有用。
  1. 静音-这是默认错误模式。
  2. 警告-这对于调试很有用。
  3. 例外-此模式允许进行优美的错误处理, 同时隐藏一个人可能用来利用你的系统的数据。
插入和更新
PDO将常用的插入和更新数据库操作简化为两步过程, 即
准备> > [绑定] > > 执行。
通过这种方法, 我们可以充分利用PDO的准备好的语句, 该语句通过SQL注入防止恶意攻击。
预准备语句是预编译的SQL语句, 可以通过将该数据发送到服务器来多次执行。在占位符中使用的该数据会自动受到SQL注入攻击的保护。
使用PDO的好处 PDO是本机数据库驱动程序。使用PDO有一些好处, 如下所示:
  • 可用性-它包含许多辅助功能, 可进行自动例行操作。
  • 可重用性-它提供了访问多个数据库的统一API。
  • 安全性-它使用准备好的语句来防止SQL注入。预准备语句是预编译的SQL语句, 它将SQL语句的指令与数据分开。
PDO类别 有以下三种PDO类:
  • PDO-表示PHP与数据库之间的连接。
  • PDOStatement-它代表准备好的语句, 并在语句执行后设置关联的结果。
  • PDOException-它表示由PDO引发的错误。
PDO支持的数据库
  1. MySQL
  2. PostgreSQL的
  3. 甲骨文
  4. 火鸟
  5. MS SQL服务器
  6. Sybase公司
  7. Informix
  8. IBM公司
  9. FreeTDS
  10. SQLite的
  11. 笨拙的
  12. 4D
PDO与MySQLi的比较 要使用PHP访问数据库, 我们主要有两个选项-MySQLi和PDO(PHP数据对象)。 MySQLi是PHP的本机, 可提供更快的性能, 而大多数有经验的开发人员更喜欢使用PDO, 因为它支持多种数据库驱动程序。下面根据功能列出了PDO和MySQLi之间的差异。
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或MySQLi之间应该首选哪个? PDO和MySQLi都有各自的优势:
  • 如前所述, PDO可在12种不同的数据库系统上运行, 而MySQL只能与MySQL数据库一起使用。因此, 如果我们想将项目切换到另一个数据库, 则PDO使其变得容易。在MySQLi中, 我们必须重写整个代码。
  • PDO和MySQLi都是面向对象的, 但是MySQLi还提供了过程API。两者都支持预准备语句。预备语句对于Web应用程序安全性很重要, 因为它可以防止SQL注入。
需求 不需要外部库来构建此扩展。
安装过程 步骤1:从此处https://www.apachefriends.org/download.html下载适用于Windows, Linux和MacOS等不同平台的最新XAMPP服务器。
PHP PDO介绍和环境部署

文章图片
注意:这里我们将仅讨论Windows OS的安装过程。 步骤2:按照以下步骤在系统上安装XAMPP服务器。
PHP PDO介绍和环境部署

文章图片
步骤3:选择要安装的组件, 然后单击Next(下一步)按钮。
PHP PDO介绍和环境部署

文章图片
步骤4:在要安装XAMPP的位置创建一个名为xampp的新文件夹。
PHP PDO介绍和环境部署

文章图片
第5步:在此处单击下一步, 然后继续。 XAMPP服务器的安装将从此处开始。
PHP PDO介绍和环境部署

文章图片
步骤6:成功安装XAMPP。单击完成按钮。
PHP PDO介绍和环境部署

文章图片
步骤7:选择首选语言。
PHP PDO介绍和环境部署

文章图片
步骤8:从此处运行Apache服务器和MySQL(按照给定的屏幕截图)。
PHP PDO介绍和环境部署

文章图片
步骤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的数据库。
PHP PDO介绍和环境部署

文章图片
数据库连接 与数据库交互总是需要数据库连接。因此, 我们需要知道访问数据库的标识符, 即数据库的位置, 数据库名称, 用户名和密码。
现在, 在任何文本编辑器(例如记事本或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 /或在保存程序的位置在服务器上运行它。
PHP PDO介绍和环境部署

文章图片
处理连接错误 如果存在任何连接错误, 则将引发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 PDO介绍和环境部署

文章图片
关闭数据库连接
< ?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 PDO介绍和环境部署

文章图片

    推荐阅读