它们看起来是一样的,但又不同。我不知道哪一个是哪一个:我知道我们可以使用PDO作为new PDO(),并使用prepare()和query()方法从数据库中获取数据。那么,如果这是扩展列表中提到的PDO,那么pdo_mysql和mysqlnd到底是什么(外行术语)?
发布于 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。
发布于 2017-01-24 02:02:02
您需要PDO_Mysql才能使用带有PDO的mysql数据库。这是驱动程序。
Mysqld是Mysql服务器,您可以使用PDO或mysqli访问它。
Mysqlnd是与Mysql服务器通信的库/驱动程序,PDO和mysqli都使用它。
https://stackoverflow.com/questions/41812651
复制相似问题