5

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

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

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

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

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

一切顺利,理查德

4

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

于 2012-06-28T14:06:34.650 回答
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'");
于 2014-04-29T08:06:21.570 回答
0

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

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

感谢所有的帮助

于 2012-06-28T14:07:41.703 回答