如何使用PHP 8.1连接MS SQL Server 2008 R2?
PHP 8.1连接SQL Server 2008 R2的可行方案
由于官方sqlsrv扩展从5.10版本(适配PHP8.1的最低版本)开始不再支持SQL Server 2008 R2,你可以通过以下几种方案解决连接问题:
方案一:使用ODBC驱动替代sqlsrv扩展
这是最推荐的方案,无需降级PHP版本,兼容性更强:
- 安装支持SQL Server 2008 R2的ODBC驱动,推荐Microsoft ODBC Driver 11 for SQL Server(该版本明确支持2008 R2,可兼容PHP8.1)
- 启用WAMP中PHP的ODBC相关扩展:
- 打开
php.ini,取消extension=pdo_odbc和extension=odbc的注释 - 重启WAMP服务
- 打开
- 使用PDO_ODBC或原生ODBC函数连接数据库:
- PDO_ODBC示例代码:
try { $dsn = 'odbc:Driver={ODBC Driver 11 for SQL Server};Server=你的SQL服务器地址;Database=目标数据库名;UID=账号;PWD=密码'; $pdo = new PDO($dsn); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "数据库连接成功"; } catch(PDOException $e) { die("连接失败: " . $e->getMessage()); } - 原生ODBC函数示例代码:
$conn = odbc_connect( "Driver={ODBC Driver 11 for SQL Server};Server=你的SQL服务器地址;Database=目标数据库名;", "账号", "密码" ); if (!$conn) { die("连接失败: " . odbc_errormsg()); }
- PDO_ODBC示例代码:
方案二:降级PHP版本适配旧版sqlsrv扩展
如果必须使用sqlsrv扩展,可调整PHP版本:
- 将WAMP中的PHP版本降级到8.0(支持SQL Server 2008 R2的
sqlsrv最高版本是5.9,该版本适配PHP7.4~8.0) - 下载对应架构(x86/x64)的
sqlsrv_5.9扩展文件,放入WAMP的PHP扩展目录 - 在
php.ini中添加extension=sqlsrv和extension=pdo_sqlsrv,重启WAMP服务 - 即可用常规
sqlsrv连接代码操作数据库
方案三:搭建数据库代理中间层
若上述方案都无法实施,可搭建轻量中间服务(比如用.NET或Python编写):
- 中间服务负责直接连接SQL Server 2008 R2
- PHP通过HTTP请求调用中间服务的接口,间接完成数据库操作
此方案适合特殊场景,但会增加架构复杂度,仅作为备选。
内容的提问来源于stack exchange,提问作者Bishu
相关产品推荐
相关产品推荐

