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

Dav*_*veB 8 php pdo

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

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

谢谢,

Ibr*_*mar 15

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

详细说明下面的代码.

使用PDO建立与MySQL的连接:

$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD); 
Run Code Online (Sandbox Code Playgroud)

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

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

现在$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();
Run Code Online (Sandbox Code Playgroud)

上面的代码使用了命名占位符,这样PDO可以保护您免受许多漏洞的影响,因为它可以让您远离MySQL注入.为了让你开始看看netttus的这个教程,他们已经很好地解释了这篇文章,这篇文章将解释你所有关于PDO的困境

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

  • `$ sth`是一个变量,用于引用PDO查询的`statement handle`,`:name,:email`等是占位符,bindParam在上面的例子中用``name`替换`:name`.你应该阅读上面提到的文章,作者已经提出了一些非常好的观点,这些观点将有助于你理解这个概念 (2认同)

Qua*_*unk 0

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

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

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