PHP连接MSSQL数据库的三种主流方法详解

桃夭
桃夭
发布时间:2026-10-14| 5人浏览过
原创

本文介绍如何使用PHP连接Microsoft SQL Server数据库,主要涉及ODBC、传统mssql扩展以及专为SQL Server 2008及以上版本设计的sqlsrv驱动三种方法。内容涵盖数据源配置、连接建立、查询处理及资源关闭的全流程操作。

准备工作与驱动配置

在编写连接代码前,需确保PHP环境中已启用相应的数据库扩展。打开 php.ini 配置文件,根据目标数据库类型解除对应扩展前的注释符号(;):

  • ODBC方式: 找到并取消注释 extension=php_pdo_odbc.dll(或 extension=php_mssql.dll 视具体版本而定)。
  • mssql方式: 确认 extension=php_mssql.dll 处于启用状态(适用于旧版SQL Server)。
  • sqlsrv方式: PHP 5.3及以后版本不再内置此扩展,需从微软官网下载对应版本的 sqlsrv 驱动程序并确保加载。

修改 php.ini 后,必须重启Web服务器(如Apache或Nginx)以使配置生效。

方法一:通过ODBC连接(通用性强)

ODBC(Open Database Connectivity)是一种标准接口,适用于多种数据库。在PHP中使用ODBC连接MSSQL,需在服务器端预先配置DNS数据源。

第1步:配置ODBC数据源

数据源配置需注意操作系统位数与数据库服务位数的匹配问题:

  • 32位系统: 直接通过控制面板中的“管理工具” → “数据源 (ODBC)”进行设置。
  • 64位系统: 若数据库为64位,直接使用默认的ODBC管理器;若需配置32位ODBC以兼容32位PHP应用,需运行专用程序:C:\Windows\SysWOW64\odbcad32.exe。

注意: 无论系统位数如何,务必保证本地配置的ODBC数据源位数与PHP运行的环境位数一致,否则连接会失败。

第2步:建立连接与执行查询

使用 odbc_connect 函数进行连接,并通过 odbc_do 和 odbc_result 处理数据。代码如下:

// 建立连接
$con = odbc_connect('数据源名称', '用户名', '密码');

// 定义SQL查询语句
$query = "SELECT TOP 12 * FROM 数据库表名 ORDER BY id DESC";

// 执行查询
$result = odbc_do($con, $query);

// 遍历结果集
while (odbc_fetch_row($result)) {
    $变量名称 = odbc_result($result, "字段名称");
    // 处理数据...
}

// 关闭连接
odbc_close($con);

方法二:通过mssql扩展连接(适用于SQL Server 2000/2005)

该方式使用PHP原生的 mssql_* 系列函数,操作直观,但仅支持较老版本的SQL Server。

第1步:建立连接

使用 mssql_connect 指定服务器地址、用户名和密码:

$con = mssql_connect('数据库地址/IP', '用户名', '密码');

第2步:执行查询与读取数据

查询语句赋值给变量后,通过 mssql_query 执行,并使用 mssql_fetch_array 逐行获取数组格式的结果:

// 执行查询
$result = mssql_query($query, $con);

// 遍历结果
while ($row = mssql_fetch_array($result)) {
    $变量名称 = $row["字段名称"];
    // 处理数据...
}

// 关闭连接
mssql_close($con);

方法三:通过sqlsrv驱动连接(推荐用于SQL Server 2008及以上版本)

sqlsrv 是微软官方提供的轻量级驱动,性能优于ODBC,且原生支持新版SQL Server特性。由于现代PHP版本默认不包含,需手动安装。

第1步:配置连接信息数组

推荐使用关联数组传递连接参数,包括UID(用户ID)、PWD(密码)和Database(数据库名):

$connectionInfo = array(
    "UID" => "用户名",
    "PWD" => "密码",
    "Database" => "数据库名称"
);

// 建立连接
$con = sqlsrv_connect("数据库地址", $connectionInfo);

if ($con === false) {
    die(print_r(sqlsrv_errors(), true));
}

第2步:执行查询与处理结果

使用 sqlsrv_query 执行SQL,并通过 sqlsrv_fetch_array 获取数据:

// 执行查询
$result = sqlsrv_query($con, $query);

// 遍历结果
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
    $变量名称 = $row["字段名称"];
    // 处理数据...
}

// 关闭连接
sqlsrv_close($con);

总结与注意事项

  • 位数匹配: ODBC方式最容易因系统/PHP/数据库位数不一致导致连接失败,配置时需严格核对。
  • 版本选择: 如果使用的是SQL Server 2008或更高版本,强烈建议使用 sqlsrv 驱动,它提供了更好的性能和错误处理机制。
  • 资源释放: 所有方式最后都需调用对应的关闭函数(如 odbc_close, mssql_close, sqlsrv_close)以释放数据库连接资源。

以上就是PHP连接MSSQL数据库的详细内容,更多关于PHP数据库连接的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。