繁体   English   中英

什么是 PDO,为什么要使用它?

[英]What is PDO & why should I use it?

人们不断提到在处理 MySQL 时我应该在我的 PHP 中使用 PDO,我以前从未听说过这个。

什么是 PDO? 它是如何使用的,有什么优点和缺点?

谢谢,

将 PDO 视为与 PHP 打包在一起的内置类,使您可以更轻松地与数据库进行交互。 在开发 PHP 应用程序时,您需要处理很多事情,例如建立连接、创建查询、获取结果、将资源转换为数组、使用mysql_real_escape_string()逃避 MySQL 注入,现在有很多事情需要注意的,至少但不是最后考虑这样一种情况,您想从 mysql 跳转到 mysqli 或 MSSQL,因为您需要遍历每个函数并更改每一行代码以满足需要。 PDO 通过提供一个集中的类来消除所有这些问题。

详细看下面的代码。

使用 PDO 建立到 MySQL 的连接:

$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD); 

就是这样,连接已建立,您可以重用 $dbh 来执行查询,例如从表用户获取结果,您只需要两行代码。

$sth = $dbh->query('SELECT id,name,email FROM users');
$user = $sth->fetch(PDO::FETCH_ASSOC);

现在$user会将所有值作为关联数组获取。

要将值插入数据库,您需要执行以下操作。

$sth = $dbh->prepare('INSERT INTO users(name,email) VALUES(:name, :email)');
$sth->bindParam(':name', 'My Name');
$sth->bindParam(':email', 'email@email.com');
$sth->execute();

上面的代码使用了命名占位符,这样 PDO 可以让你远离许多漏洞,因为它可以让你远离 MySQL 注入。 为了让您入门,请查看 netttus 的本教程,他们解释得非常好,本文将解释您关于 PDO 的所有困境

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

PDO 是什么?

PDO 代表 PHP 数据对象。 这是一个允许 PHP 脚本通过 SQL 查询查询数据库的接口。

PDO 是添加到 PHP 的扩展,以便在该语言中可以使用其各种功能。 它构成了数据库的一个抽象接口,也就是说它的所有功能都可以用来执行SQL查询,不管是什么DBMS。 换句话说,如果web应用是基于MySQL DBMS,我们可以在不修改源代码的情况下迁移到PostgreSQL DBMS(需要做一些小改动)。

与访问它们的旧方法相比,数据库的抽象是一个强项。 此外,它构成了 PDO 的最终优势,而不是唯一的优势。

PDO 的正常运行取决于数据库驱动程序的可用性。 必须支持此功能才能查询所需的 DBMS。

例如,要声明 SBGD MySQL 驱动程序,请转到 php.ini 文件并添加以下行(如果尚未声明): extension = php_pdo_mysql.dll 请注意,还必须出现以下行:extension = php_pdo.dll低于 5.3 的 PHP 版本需要此步骤。 使用 PDO(连接到数据库)对象为了简化说明,我将使用一个示例:

假设数据库服务器是本地服务器(localhost),我们要查询的数据库(MySQL)叫做“mabase”。 为了能够查询这个数据库,我们将使用用户名“user”和密码“1234”。 当然,用户“user”只有足够的权限通过 PHP 脚本查询数据库。

现在假设在“mabase”数据库中,已经创建了一个名为“users”的表,其结构如下:

CREATE TABLE `utilisateurs` (
   `id` int(10) unsigned NOT NULL auto_increment,
   `date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
   `nom` varchar(40) NOT NULL,
   `prenom` varchar(40) NOT NULL,
   `login` varchar(40) NOT NULL,
   `pass` varchar(40) NOT NULL,
   PRIMARY KEY (`id`)
);

我猜你对 SQL 语言很满意。 否则,只需通过服务器上的 PHPMyAdmin 工具运行此代码。

现在我们数据库的所有设置都在那里。 我们将看到如何通过 PDO 对象使用 PHP 查询它。 数据库连接字符串(PDO 实例) 连接字符串是安装在服务器上的数据库连接信息的文本表示。 在这种情况下声明连接字符串就像创建一个 PDO 实例,如下所示:

<?php
   $pdo = new PDO("mysql:host=localhost;dbname=mabase","user","1234");
?>

http://php.net/manual/en/book.pdo.php

PHP 数据对象 (PDO) 扩展定义了一个轻量级、一致的接口,用于在 PHP 中访问数据库。

PDO 提供了一个数据访问抽象层,这意味着,无论您使用的是哪个数据库,您都可以使用相同的函数来发出查询和获取数据。 PDO 不提供数据库抽象; 它不会重写 SQL 或模拟缺失的功能。 如果您需要该设施,您应该使用成熟的抽象层。

PDO 是一个面向对象的类,用于编写和执行 MySQL 查询。 这似乎增加了一层复杂性,但 PDO 实际上允许您在 php 中更简单地编写查询,并以编程方式编写查询(其他代码为您构造不同的查询行)。

PDO 还处理了很多安全问题,例如转义 sql 查询。 如果您不使用像 PDO 这样的数据库抽象层,您将永远不会做任何这些事情,即使您尝试使用,也很容易忘记,或者做错了。

如果您不关心安全性(例如SQL 注入)并且您能够编写您需要的自然 MySQL 查询,那么您无需担心。 当你在使用框架的更结构化的项目中工作时,学习它可能会让事情变得更容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM