nd_pdo_mysql和pdo_mysql扩展有什么区别?

时间:2017-09-25 22:03:08

标签: php mysql pdo

由于某种原因,托管服务器上的PHP扩展pdo_mysql无法运行使用mysql View的查询,并显示以下错误消息:

  

SQLSTATE [HY000]:一般错误:1615准备好的声明需要重新准备

其中有讨论:

https://bugs.mysql.com/bug.php?id=42041

以及众多stackoverflow条目。

但由于某种原因,使用View的查询运行得很好,如果我们使用扩展名nd_pdo_mysql切换到连接,这是用于MySQL本机驱动程序mysqlnd

我的问题是:两个驱动程序之间有什么区别?为什么通常选择一个驱动程序而不是另一个?

感谢。

1 个答案:

答案 0 :(得分:5)

要从PHP连接到MySQL服务器,有两个版本的驱动程序:

  1. mysqlnd
  2. libmysql
  3. 要使用mysqlnd驱动程序连接到MySQL服务器,请使用nd_pdo_mysql扩展名,如下面的屏幕截图所示。

    enter image description here

    由于libmysql将数字类型作为字符串返回,因此我使用mysqlndnd_pdo_mysql来获取原生/严格数据,因此数字类型为 NOT 作为字符串返回。

    来自MySQL官方网站: https://dev.mysql.com/downloads/connector/php-mysqlnd/

      

    PHP mysqlnd的MySQL本机驱动程序是PHP脚本语言的MySQL客户端库libmysql的替代品。