php - 如何通过我的 ODBC for MSSQL 成功使用 PDO?
问题描述
- 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);
?>
php.ini 扩展:
- 扩展=pdo_odbc
- 扩展=php_mysqli.dll
- 扩展=php_ldap.dll
- 扩展=php_pdo_sqlsrv_72_ts_x86.dll
- 扩展=php_sqlsrv_72_ts_x86.dll
我为上述每个新的 PDO 尝试得到的错误
*SQLSTATE[IM002] SQLConnect: 0 [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序
找不到驱动程序
SQLSTATE[IMSSP]:此扩展需要 Microsoft ODBC Driver for SQL Server 才能与 SQL Server 通信。访问以下 URL 以下载适用于 x86 的 SQL Server 的 ODBC 驱动程序:https ://go.microsoft.com/fwlink/?LinkId=163712
SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序*
解决方案
试试这个,它对我有用:
1.- 执行 PDO Drivers/Version 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
祝你好运
推荐阅读
- html - 仅在被点击的元素上添加 [ngClass]
- python - 在不刷新网页的情况下刷新源代码
- python - 使用带有 'mean()' 和 'median()' 的 eval 函数
- flutter - 我的 Flutter Web 应用程序中的 CORS 策略阻止了对 XMLHttpRequest 的访问
- ios - react-native 无法构建 ios: (error xcode Flipper) Typedef 重新定义不同类型 ('uint8_t' (aka 'unsigned char') vs 'enum clockid_t')
- or-tools - 护士调度:N 天内最大的无轮班序列必须 > X
- javascript - 根据他们的 id 调用对象并将结果附加到一个大的最终对象
- c - Microsoft Compiler C Program - 请帮助在编译期间使用 _Pragma 消息将宏参数(它是一个字符串)打印到构建日志
- sql - 如何使用 REGEXP_SUBSTR() 从 oracle 中的表中提取字符串的某些部分(条件不包括第一个空格的前面部分)
- python - while循环中的pop变量在完成后不会打印