首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php中的Mysqlnd、PDO和PDO_Mysql扩展有什么不同?

php中的Mysqlnd、PDO和PDO_Mysql扩展有什么不同?
EN

Stack Overflow用户
提问于 2017-01-24 01:56:53
回答 2查看 10K关注 0票数 7

它们看起来是一样的,但又不同。我不知道哪一个是哪一个:我知道我们可以使用PDO作为new PDO(),并使用prepare()query()方法从数据库中获取数据。那么,如果这是扩展列表中提到的PDO,那么pdo_mysql和mysqlnd到底是什么(外行术语)?

EN

回答 2

Stack Overflow用户

发布于 2017-01-24 02:56:11

PDO本身就是PHP提供的一个database abstraction layer。这可能不是您想的那样,但是PHP在the PDO documentation中澄清了这一点。

PDO提供了一个数据访问抽象层,这意味着,无论您使用哪个数据库,都可以使用相同的函数来发出查询和获取数据。PDO不提供数据库抽象;它不重写SQL或模拟缺失的特性。如果你需要一个完整的抽象层,你应该使用它。

根据您的系统,先使用you need to enable its driver,然后再使用它。(但很可能不是。)

您可以对各种不同的数据库(MySQL、Oracle、PostgreSQL等)使用PDO。但是您需要为您想要使用的数据库类型执行enable the specific driver。来自我之前链接的相同PDO简介文档:

请注意,您不能使用PDO扩展本身执行任何数据库功能;必须使用特定于数据库的PDO驱动程序来访问数据库服务器。

pdo_mysql就是其中之一。这些驱动程序实现了PDO接口,这意味着它们允许您对特定的数据库使用prepare()query()等。

mysqlnd负责处理PHP和MySQL之间的通信。从PHP5.4开始,它一直是所有MySQL扩展(如pdo_mysql)的默认驱动程序,所以如果您使用的是受支持的PHP版本,那么您可能正在使用它。但它在幕后工作,只是处理通信。您将不会使用任何mysqlnd函数。来自the mysqlnd documentation的"What it not“部分

尽管PHP Driver是作为

扩展编写的,但需要注意的是,它并没有为MySQL程序员提供新的API。用于MYSQL数据库连接的编程API是由MySQL扩展mysqli和PDO MySQL提供的。这些扩展现在可以使用MySQL本机驱动程序的服务与MySQL服务器通信。因此,您不应该将API本机驱动程序视为MySQL。

票数 11
EN

Stack Overflow用户

发布于 2017-01-24 02:02:02

您需要PDO_Mysql才能使用带有PDO的mysql数据库。这是驱动程序。

Mysqld是Mysql服务器,您可以使用PDO或mysqli访问它。

Mysqlnd是与Mysql服务器通信的库/驱动程序,PDO和mysqli都使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41812651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档