优缺点都有什么?

就我们而言,我们分为使用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

上一篇: what are the pros and cons?

下一篇: Cookies not saved in the browser