php中的Mysqlnd、PDO和PDO_Mysql扩展之间有什么区别



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

PDO本身是PHP提供的数据库抽象层。这可能并不是你认为的那样,但PHP在PDO文档中澄清了这一点:

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

根据您的系统,您可能需要启用其驱动程序才能使用它。(但可能不是。)

您可以将PDO与各种不同的数据库(MySQL、Oracle、PostgreSQL等)一起使用,但您需要为要使用的数据库类型启用特定的驱动程序。来自我之前链接的PDO介绍文档:

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

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

mysqlnd处理PHP和MySQL之间的通信。自PHP 5.4版本以来,它一直是所有MySQL扩展(如pdo_mysql)的默认驱动程序,所以如果你使用的是受支持的PHP版本,你可能正在使用它。但它在幕后工作,只是处理通信。您不会使用任何mysqlnd函数。来自mysqlnd文档的"它不是什么"部分:

虽然MySQL Native驱动程序是作为PHP扩展编写的,但需要注意的是,它并没有为PHP程序员提供新的API。MySQL数据库连接的程序员API由MySQL扩展、mysqli和PDO MySQL提供。这些扩展现在可以使用MySQL Native Driver的服务与MySQL Server进行通信。因此,您不应该将MySQL Native Driver视为API。

您需要PDO_Mysql来使用带有PDO的Mysql数据库。是司机。

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

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

相关内容

  • 没有找到相关文章

最新更新