如何成功将PDO与ODBC用于MSSQL?

时间:2018-06-25 07:07:32

标签: php sql-server odbc

  • Windows Server 2016 64位(完全更新)
  • WAMP / 3.1.3(Win32)
  • Apache / 2.4.33(Win32)
  • PHP / 7.2.4(Win32)

我正在尝试连接到SQL Server上的数据库,但似乎无法使连接正常工作。我尝试了几种方法,下载了文件,启用了扩展名,但是似乎都没有用。我已经确定SQL Server具有命名管道,并且允许进行远程连接。我还确认了他的密码和用户名有效:

<?php

$driver='{ODBC Driver 17 for SQL Server}';
/* $driver='{ODBC Driver 13 for SQL Server}'; */
/* $driver='{ODBC Driver 11 for SQL Server}'; */
$dsn='phpodbc11';
$hostname='host01';
$database='data01';
$username='root';
$password='pass123';

$conn = new PDO("odbc:$dns")
$conn = new PDO("dblib:host=$hostname;dbname=$database", $username,$password);
$conn = new PDO("sqlsrv:Server=$hostname;Database=$database", $username, $password);
$conn = new PDO("odbc:Driver=$driver;Server=$hostname;Database=$database", $username, $password);

?>

Drivers Loaded on the Server System DSNs loaded

php.ini扩展名:

  • extension = pdo_odbc
  • extension = php_mysqli.dll
  • extension = php_ldap.dll
  • extension = php_pdo_sqlsrv_72_ts_x86.dll
  • extension = php_sqlsrv_72_ts_x86.dll

我在上述每次新的PDO尝试中遇到的错误

* SQLSTATE [IM002] SQLConnect:0 [Microsoft] [ODBC驱动程序管理器]找不到数据源名称,并且未指定默认驱动程序

找不到驱动程序

SQLSTATE [IMSSP]:此扩展需要SQL Server的Microsoft ODBC驱动程序才能与SQL Server通信。访问以下URL,以下载用于x86的SQL Server ODBC驱动程序:https://go.microsoft.com/fwlink/?LinkId=163712

SQLSTATE [IM002] SQLDriverConnect:0 [Microsoft] [ODBC驱动程序管理器]找不到数据源名称,并且未指定默认驱动程序*

1 个答案:

答案 0 :(得分:0)

尝试一下,它对我有用:
1.-执行PDO驱动程序/版本3_2 / SQLSRV32.exe
    从PDO Drivers

下载
First see compatibillity in [Drivers for PHP for SQL Server][2]

2.-将此DLL复制到您的WAMP目录中

  • php_sqlsrv_56_ts.dll
  • php_pdo_sqlsrv_56_ts.dll
  • php_pdo_sqlsrv_56_nts.dll

3.-在您的php.ini部分动态扩展中添加以下扩展行:

extension=php_sqlsrv_56_ts.dll  
extension=php_pdo_sqlsrv_56_ts.dll  
extension=php_pdo_sqlsrv_56_nts.dll  

4.-重新启动apache WampServer
5.-在您的计算机中安装ODBC 11:
    ODBC

Run: ODBC/msodbcsql.msi  

6.-参见phpinfo.php,现在您必须是:

PDO  
PDO support enabled  
PDO drivers mysql, sqlite, **sqlsrv**  

pdo_sqlsrv  
pdo_sqlsrv support  enabled  
Directive   Local Value Master Value  
pdo_sqlsrv.client_buffer_max_kb_size    10240   10240  
pdo_sqlsrv.log_severity 0   0  

sqlsrv  
sqlsrv support  enabled  
Directive   Local Value Master Value  
sqlsrv.ClientBufferMaxKBSize    10240   10240  
sqlsrv.LogSeverity  0   0  
sqlsrv.LogSubsystems    0   0  
sqlsrv.WarningsReturnAsErrors   On  On  

祝你好运