首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是PDO &我为什么要使用它?

问什么是PDO &我为什么要使用它?
EN

Stack Overflow用户
提问于 2011-08-08 18:26:55
回答 4查看 12.5K关注 0票数 9

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

什么是PDO?它是如何使用的,利弊是什么?

谢谢,

EN

回答 4

Stack Overflow用户

发布于 2011-08-08 19:06:37

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

为了详细说明,请看下面的代码。

使用PDO建立到MySQL的连接:

代码语言:javascript
复制
$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD); 

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

代码语言:javascript
复制
$sth = $dbh->query('SELECT id,name,email FROM users');
$user = $sth->fetch(PDO::FETCH_ASSOC);

现在,$user将以关联数组的形式获取所有值。

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

代码语言:javascript
复制
$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/

票数 15
EN

Stack Overflow用户

发布于 2011-08-08 18:34:16

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

PHP Objects (PDO)扩展定义了一个轻量级的、一致的接口来访问

中的数据库。

PDO提供了一个数据访问抽象层,这意味着,无论您使用哪个数据库,都可以使用相同的函数来发出查询和获取数据。PDO不提供数据库抽象;它不重写SQL或模拟缺失的特性。如果你需要这个工具,你应该使用一个完整的抽象层。

票数 0
EN

Stack Overflow用户

发布于 2011-08-08 18:54:33

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6980792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档