php - mysqli 或 PDO - 优缺点是什么?

标签 php mysql pdo mysqli database-abstraction

在我们这里,我们分为使用 mysqli 和 PDO 来处理准备好的语句和事务支持等内容。有些项目使用其中一种,有些则使用另一种。我们迁移到另一个 RDBMS 的现实可能性很小。

我更喜欢 PDO,因为它允许为准备好的语句命名参数,而据我所知 mysqli 不允许。

当我们整合项目以仅使用一种方法时,选择一种方法作为标准是否还有其他优点和缺点?

最佳答案

嗯,你可以争论面向对象方面、准备好的语句、它成为标准的事实等等。但我知道大多数时候,说服某人使用 killer 级功能会更好。所以就是这样:

PDO 的一个非常好的事情是您可以获取数据,并将其自动注入(inject)到对象中。如果您不想使用 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();
}

关于php - mysqli 或 PDO - 优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18826624/

相关文章:

php - 我可以让 mysql 对它接收的数据类型不那么严格吗?

php - sql BEGIN 创建错误

php - PDO 是否处理 sql 函数?

php - 带有 Laravel 5.4 的 Instagram API

php - 仅当数据不存在时才将数据从一个表插入到另一个表

javascript - Ajax .change() 不适用于多重选择

MySQL - 3 个表,这个复杂的连接是否可行?

mysql - Codeigniter trans_start() 不回滚所有查询

php - 获取图像大小() : Filename cannot be empty

MYSQL 根据另一张表求和