如何配置wampserver使用PDO连接到mssql服务器?

时间:2014-12-09 15:58:46

标签: php sql-server pdo

我正在尝试使用PDO连接到MSSQL数据库服务器。我从Microsoft的网页下载了一些.dll文件,并将它们复制到wampserver的 wamp \ bin \ php \ php5.5.12 \ ext 文件夹中。然后我编辑了php.ini,它位于 wamp \ bin \ apache \ apache2.4.9 \ bin 文件夹中。

我添加了以下几行:

extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_ts.dll
;extension=php_sqlsrv_55_nts.dll
;extension=php_pdo_sqlsrv_55_nts.dll

我已关闭wampserver并再次运行它。我可以在菜单上看到这四个扩展 PHP - >当我点击wampserver的托盘图标时,PHP Extensions

然后我尝试使用以下代码创建连接:

$conn = new PDO('sqlsrv:Server=1.2.3.4,1433;Database=database.mdf', 
                'user', 'password', 
                array(PDO::ATTR_EMULATE_PREPARES => false,
                      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
               );

当我从浏览器调用页面时,我得到了

  

无法找到驱动程序

错误。

首先,如何使用PDO连接到mssql服务器? 第二,我是否错过了关于安装和/或配置的任何观点?

修改

下面,您可以看到我的php.ini文件的扩展部分。

extension=php_bz2.dll
extension=php_curl.dll
extension=php_com_dotnet.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_gmp.dll
extension=php_intl.dll
extension=php_imap.dll
;extension=php_interbase.dll
extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll      ; Must be after mbstring as it depends on it
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
extension=php_shmop.dll
; The MIBS data available in the PHP distribution must be installed. 
; See http://www.php.net/manual/en/snmp.installation.php 
;extension=php_snmp.dll
extension=php_soap.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll  
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_ts.dll
;extension=php_sqlsrv_55_nts.dll
;extension=php_pdo_sqlsrv_55_nts.dll

编辑2:

最后我发现我的dll文件与我当前的wampserver64不兼容。我正在寻找正确的文件。

3 个答案:

答案 0 :(得分:1)

我已卸载WampServer64并安装了WampServer32。那么一切都好了。

我的连接对象

$conn = new PDO('sqlsrv:Server='.$host.';Database=' . $db, $user, $pass, 
                array(
                      PDO::ATTR_EMULATE_PREPARES => false,
                      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
                     )
               );

还有另外一点:我在数据库名称之后无意中输入了 .mdf 扩展名。因为如果我写它就会得到

  

28000 - SQLSTATE [28000]:[Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server]用户登录失败' zkanoca_dbuser'。

错误。

答案 1 :(得分:0)

您必须启用:

extension=php_pdo_mssql.dll
在你的php.ini中

答案 2 :(得分:0)

我有一个Windows服务器,我在这里运行PHP,我在这里查看的是我启用的扩展程序:

extension=php_mssql.dll
extension=php_pdo.dll
extension=php_pdo_mssql.dll
extension=php_pdo_odbc.dll #(might not need it)

你的连接看起来像这样:

$conn = new PDO('mssql:host=1.2.3.4;dbname=database', 'user', 'password');

希望这有帮助。