优缺点都有什么?
就我们而言,我们分为使用mysqli和PDO来处理预先准备的语句和事务支持等。 一些项目使用一个,另一个使用另一个。 我们转向其他关系型数据库几乎没有现实可能。
我更喜欢PDO,因为它允许准备好的语句的命名参数,并且据我所知,mysqli没有。
在我们巩固我们的项目以使用一种方法时,是否有其他优点和缺点可以选择作为标准?
那么,你可以与面向对象的方面,准备好的陈述,它成为一个标准的事实等进行争论。但是我知道大多数时候,说服某人更好地利用杀手功能。 所以那里是:
PDO真的很棒,你可以获取数据,并将其自动注入到一个对象中。 如果你不想使用ORM(因为它只是一个快速脚本),但你确实喜欢对象映射,所以它非常酷:
class Student {
public $id;
public $first_name;
public $last_name
public function getFullName() {
return $this->first_name.' '.$this->last_name
}
}
try
{
$dbh = new PDO("mysql:host=$hostname;dbname=school", $username, $password)
$stmt = $dbh->query("SELECT * FROM students");
/* MAGIC HAPPENS HERE */
$stmt->setFetchMode(PDO::FETCH_INTO, new Student);
foreach($stmt as $student)
{
echo $student->getFullName().'<br />';
}
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
将应用程序从一个数据库移到另一个数据库并不常见,但迟早您可能会发现自己正在使用不同的RDBMS处理另一个项目。 如果你在PDO的家里,那么在那个时候至少要学一点东西。
除此之外,我发现PDO API更直观一些,并且感觉更加真实的面向对象。 如果你知道我的意思,mysqli觉得它只是一个被客观化的程序API。 总之,我发现PDO更容易处理,但这当然是主观的。
我开始使用PDO,因为在我看来,声明支持更好。 我使用的是ActiveRecord-esque数据访问层,实现动态生成的语句更容易。 MySQLi的参数绑定必须在单个函数/方法调用中完成,所以如果你直到运行时才知道要绑定多少个参数,那么你不得不使用call_user_func_array()
(我相信这是正确的函数名称)进行选择。 并忘记简单的动态结果绑定。
最重要的是,我喜欢PDO,因为它是一个非常合理的抽象层次。 在不想编写SQL的完全抽象系统中使用它很容易,但它也使得更容易使用更优化的纯查询类型的系统,或者混合和匹配两者。
链接地址: http://www.djcxy.com/p/71961.html