当您的问题更着眼于一般概述时,当当前答案更加详细时,我将尝试一下:
PDO类旨在封装与数据库交互所需的所有功能。他们通过定义“方法”(函数的OO客厅)和“属性”(变量的OO客厅)来做到这一点。您可以将它们用作您现在用于与数据库对话的所有“标准”功能的
完全替代 。
因此,与其调用一系列的“ mysql_doSomething()”函数,而不是将其结果存储在自己的变量中,而是“实例化” PDO类中的一个对象(“
class” =抽象定义,“ object” =具体的可用实例)类)并在该对象上调用方法以执行相同操作。
例如,如果没有PDO,您将执行以下操作:
// Get a db connection$connection = mysql_connect('someHost/someDB', 'userName', 'password');// Prepare a query$query = "SELECt * FROM sometable WHERe something = " . mysql_real_escape_string($comparison) . "'";// Issue a query$db_result = mysql_query($query);// Fetch the results$results = array();while ($row = mysql_fetch_array($db_result)) { $results[] = $row;}而这与使用PDO等效:
// Instantiate new PDO object (will create connection on the fly)$db = new PDO('mysql:dbname=someDB;host=someHost');// Prepare a query (will escape on the fly)$statement = $db->prepare('SELECt * FROM sometable WHERe something = :comparison');// $statement is now a PDOStatement object, with its own methods to use it, e.g.// execute the query, passing in the parameters to replace$statement->execute(array(':comparison' => $comparison));// fetch results as array$results = $statement->fetchAll();因此,乍一看,除了语法上没有什么区别。但是PDO版本具有一些优点,最大的优点是数据库独立性:
如果您需要与PostgreSQL数据库通信,则只需在实例化调用中更改
mysql:为。使用旧方法时,您将必须遍历所有代码,用其对应的“pg_doSomthing()”函数替换所有“mysql_doSomething()”函数(始终检查参数处理中的潜在差异)。对于许多其他受支持的数据库引擎,情况也是如此。
pgsql:``newPDO()
因此,回到您的问题上,PDO基本上只是为您提供了实现相同目标的不同方法,同时提供了一些快捷方式/改进/优势。例如,转义将以您正在使用的数据库引擎所需的正确方式自动发生。同样,参数替换(防止SQL注入,未在示例中显示)更加容易,从而减少了出错的可能性。
您应该阅读一些OOP基础知识,以了解其他优点。



