繁体   English   中英

PDO MSSQL Server - 找不到驱动程序

[英]PDO MSSQL Server - Driver not found

我目前正在尝试连接到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安装时会出现后缀错误。

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

一切都是最好的,理查德

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

另一种可能性是使用默认包含在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'");

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

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

谢谢你的帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM