mysqli或PDO - 有哪些优点和缺点?[已关闭]
2022-08-30 06:00:00
在我们的位置上,我们分为使用mysqli和PDO来处理预准备语句和事务支持之类的东西。有些项目使用一个,一些项目使用另一个。我们几乎不可能迁移到另一个RDBMS。
我更喜欢PDO,原因只有一个,它允许为预准备语句命名参数,据我所知,mysqli没有。
当我们整合项目以仅使用一种方法时,选择一个而不是另一个作为标准还有其他优点和缺点吗?
在我们的位置上,我们分为使用mysqli和PDO来处理预准备语句和事务支持之类的东西。有些项目使用一个,一些项目使用另一个。我们几乎不可能迁移到另一个RDBMS。
我更喜欢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更容易使用,但这当然是主观的。