【问题标题】:PDO MSSQL Server - Driver not foundPDO MSSQL 服务器 - 未找到驱动程序
【发布时间】:2012-06-30 01:17:24
【问题描述】:

我目前正在尝试连接到 MSSQL 2012 Express 上的 localdb。

我已经从http://www.microsoft.com/en-us/download/details.aspx?id=20098下载并安装了官方的微软驱动

我的 phpinfo() 中有一些 SQLSRV 部分。但是当我尝试创建一个新的 PDO 对象时,它说它没有驱动程序。我可以理解,因为 phpinfo() PDO 部分没有提到它,但它有自己的部分 + get_loaded_extensions 也显示 sqlsrv。我想那是来自官方的 MS 驱动程序?我正在使用 php_sqlsrv_53_nts.dll 使用我的 Zend Server CE 5.6 和 PHP 5.3.9

现在据我了解,我下载了错误的驱动程序,应该尝试 PECL 管理器提供的驱动程序吗?只有可用的源代码,显然我在 Windows 机器上,所以我可以忘记我需要自己编译的所有内容 - 在使用 powershell 和我的 pecl / pear 安装时,我实际上遇到了后缀错误。

有没有人解决这个问题?非常感谢任何帮助

一切顺利, 理查德

【问题讨论】:

  • 你在 php.ini 中启用了 pdo mssql 吗?
  • @PLB 是的,我有,在我的extension=php_sqlsrv_53_nts.dll 之前,但它没有改变。我也多次重启了我的 Apache。
  • 不过还是看看these steps也许你漏掉了什么。
  • @PLB 谢谢 - 唯一可能导致一些麻烦的是我没有加载 php_pdo_mssql 但这是在 php.net 上的实验性,我们建议使用 MS 适配器:(
  • 我的小研究表明,如果不启用pdo_mssql.dll,您将无法使用 pdo 连接 msserver。也许我搜索不好。

标签: php sql-server pdo driver


【解决方案1】:

PDO 扩展与 Microsoft 提供的本机驱动程序不同。对于 PDO,您必须启用

extension=php_pdo_mssql.dll

在您的 php.ini 中。

通常这个文件 (php_pdo_mssql.dll) 应该在您的 PHP 扩展目录 (C:...\php\ext) 中。如果它不存在,您可以从 http://windows.php.net/download/ 下载 PHP,然后从那里的一个包中获取扩展名(当然,取一个与您的 PHP 版本相对应的)。

//编辑:只需阅读您的最新评论。这个扩展现在可以使用很长时间了,可以被认为是有效的。如果不允许使用它,则必须重写代码以使用原生驱动程序为 PHP 提供的功能。

【讨论】:

    【解决方案2】:

    另一种可能性是使用默认包含在 php 扩展中的 odbc 驱动程序,但您仍然可能需要在 php.ini 中取消注释它们。

    extension=php_pdo_odbc.dll
    

    之后别忘了重启你的服务器 ;-)

    然后像这样使用它:

    $db = new PDO('odbc:Driver={SQL Server};Server=192.168.x.x;Database=DatabaseName; Uid=User;Pwd=Password');
    $stmt = $db->query("SELECT the_usual FROM aTable WHERE all='well'");
    

    【讨论】:

      【解决方案3】:

      好的。我想这只是这些日子之一。

      我从 MS 提供的扩展中加载了错误的扩展。我需要使用php_pdo_sqlsrv_53_nts 而不是 php_sqlsrv_53_nts

      感谢大家的帮助

      【讨论】:

        猜你喜欢
        • 2013-04-25
        • 2018-03-02
        • 1970-01-01
        • 1970-01-01
        • 2016-08-05
        • 2017-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多