PDO MSSQL Server - 找不到驱动程序

时间:2012-06-28 13:42:04

标签: php sql-server pdo driver

我目前正在尝试连接到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 Driver?我正在使用php_sqlsrv_53_nts.dll 使用我的Zend Server CE 5.6和PHP 5.3.9

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

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

一切顺利, 理查德

3 个答案:

答案 0 :(得分:2)

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提供的功能。

答案 1 :(得分: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'");

答案 2 :(得分:0)

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

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

感谢所有帮助