PDO MSSQL Server - 找不到驱动程序

6

我现在正试图连接到我的MSSQL 2012 Express本地数据库。

我已经从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安装时,实际上我会遇到后缀错误。

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

祝一切顺利, Richard


你在php.ini中启用了pdo mssql吗? - Leri
@PLB 是的,我已经尝试过,在我的 extension=php_sqlsrv_53_nts.dll 之前,但是没有改变。我也重新启动了 Apache 几次。 - Richard
但仍然请查看这些步骤,也许您错过了什么。 - Leri
@PLB 谢谢 - 可能会导致一些麻烦的唯一问题是我没有加载 php_pdo_mssql,但这在 php.net 上是实验性的,我们建议使用 MS 适配器 :( - Richard
根据我的小研究,如果没有启用 pdo_mssql.dll,则无法使用 pdo 连接 msserver。也许我没有搜索得很好。 - Leri
3个回答

3
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提供的函数。


3
另一种可能性是使用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'");

0

好的,我想这只是其中一天。

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

感谢所有的帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接