php - php中的Mysqlnd、PDO和PDO_Mysql扩展有什么区别?

标签 php pdo php-extension php-internals mysqlnd

它们似乎是同一件事,但又是不同的。我不知道哪个是哪个:我知道我们可以将 PDO 用作 new PDO()并使用 prepare()query()方法,从数据库中获取数据。所以,如果这是 PDO在扩展列表中提到,那么 pdo_mysql 和 mysqlnd 到底是什么(用外行的话)?

最佳答案

PDO 本身是一个 database abstraction layer由 PHP 提供。这可能并不完全符合您的想法,但 PHP 在 the PDO documentation 中澄清了这一点。 :

PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility.



根据您的系统,you might need to enable its driver在你可以使用它之前。 (但可能不是。)

您可以将 PDO 用于各种不同的数据库(MySQL、Oracle、PostgreSQL 等),但您需要 enable the specific driver对于您要使用的数据库类型。从我之前链接的同一个 PDO 介绍文档中:

Note that you cannot perform any database functions using the PDO extension by itself; you must use a database-specific PDO driver to access a database server.



pdo_mysql就是其中之一。这些驱动程序实现了 PDO 接口(interface),这意味着它们允许您使用 prepare() , query()等与您的特定数据库。
mysqlnd处理 PHP 和 MySQL 之间的通信。自 PHP 5.4 以来,它一直是所有 MySQL 扩展(如 pdo_mysql )的默认驱动程序,因此,如果您使用的是受支持的 PHP 版本,那么您可能正在使用它。但它在幕后工作,只是处理通信。你不会使用任何 mysqlnd职能。来自 the mysqlnd documentation 的“它不是什么”部分:

Although MySQL Native Driver is written as a PHP extension, it is important to note that it does not provide a new API to the PHP programmer. The programmer APIs for MySQL database connectivity are provided by the MySQL extension, mysqli and PDO MYSQL. These extensions can now use the services of MySQL Native Driver to communicate with the MySQL Server. Therefore, you should not think of MySQL Native Driver as an API.

关于php - php中的Mysqlnd、PDO和PDO_Mysql扩展有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41812651/

相关文章:

php - 是否有与 PDO::FETCH_CLASS 等效的 INSERT 或 UPDATE?

php - PDO 将错误的日语字符插入数据库

php - 如何查看 PHP 加载的扩展?

PHP Mysql_query 在函数内部不起作用

php - FullCalendar 使用数据库和谷歌日历

php - 使用 "= "和 "LIKE "之间有什么性能差异吗?

php - 如何防止 PDO 将问号解释为占位符?

php - 有没有人在 windows x64 上为 php 5.2.x 编译了一个 rabbitmq/amqp 库

php - 我可以将 PHP 扩展类、函数等放在命名空间中吗?

php - 如何从 API 访问私有(private)电子表格?