我正在尝试使用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不兼容。我正在寻找正确的文件。
答案 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');
希望这有帮助。