PHP如何开启MSSQL支持?

1. 简介

Microsoft SQL Server(简称MSSQL)是一种关系型数据库管理系统,它能够存储和管理大量的数据。在PHP中,我们可以通过MSSQL扩展来连接并操作MSSQL数据库。但是,由于PHP和MSSQL是不同的软件,因此需要在PHP中显式启用MSSQL扩展,才能够使用MSSQL相关函数和类。

2. 确认MSSQL扩展是否可用

在使用MSSQL扩展之前,我们需要确认该扩展是否已经被启用。我们可以通过以下两种方式来确认:

2.1 使用phpinfo函数

phpinfo函数可以显示当前PHP环境的详细配置信息,包括已启用的扩展。我们可以在一个PHP文件中加入以下代码:

// 查看MSSQL扩展是否已经启用

phpinfo();

然后访问该文件可以得到如下信息(部分信息已省略):

Configuration File (php.ini) Path            /usr/local/etc/php/7.4

Loaded Configuration File /usr/local/etc/php/7.4/php.ini

...

mssql

MsSQL Support enabled

Active Persistent Links 0

Active Links 0

Directive

Local Value

Master Value

mssql.allow_persistent

On

On

mssql.batchsize

0

0

mssql.charset

no value

no value

mssql.compatability_mode

Off

Off

mssql.connect_timeout

5

5

mssql.datetimeconvert

On

On

mssql.max_links

Unlimited

Unlimited

mssql.max_persistent

Unlimited

Unlimited

mssql.max_procs

Unlimited

Unlimited

mssql.min_error_severity

10

10

mssql.min_message_severity

10

10

mssql.secure_connection

On

On

mssql.textlimit Server

Default

no value

mssql.textsize

Server

Default

no value

mssql.timeout

60

60

...

从上图中我们可以看到mssql扩展处于enabled状态,说明MSSQL扩展已经启用。

2.2 查看PHP扩展目录

我们还可以通过查看PHP扩展目录中是否有php_mssql.dll或者php_pdo_sqlsrv.dll的文件来确认MSSQL扩展是否已经被安装。PHP扩展目录的路径可以在php.ini中的extension_dir指定。在Windows平台下,扩展文件的后缀为.dll,在Linux和Unix平台下,扩展文件的后缀为.so。

3. 安装配置MSSQL扩展

如果MSSQL扩展没有被启用,我们需要手动安装和配置。以下是Windows和Linux平台下的安装和配置方法:

3.1 Windows平台下的安装

在Windows平台下,我们可以使用以下步骤来安装并启用MSSQL扩展:

下载MSSQL扩展dll文件php_sqlsrv.dllphp_pdo_sqlsrv.dll,根据PHP版本选择相应的dll文件,并复制到PHP扩展目录(例如:C:\php\ext)下。

修改php.ini文件,在Dynamic Extensions节中添加以下两行扩展配置:

extension=php_sqlsrv.dll

extension=php_pdo_sqlsrv.dll

重启Web服务器,使配置生效。

3.2 Linux平台下的安装

在Linux平台下,我们可以使用一下步骤来安装并启用MSSQL扩展:

使用命令安装MSSQL ODBC Driver:

sudo su

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list

sudo apt-get update

sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev

安装SQL Server PHP Driver:

sudo pecl install sqlsrv pdo_sqlsrv

修改php.ini文件,增加以下两行扩展配置:

extension=sqlsrv.so

extension=pdo_sqlsrv.so

重启Web服务器,使配置生效。

4. 使用MSSQL扩展连接并操作数据库

在确认和配置完MSSQL扩展之后,我们就可以使用MSSQL扩展连接并操作数据库了。

4.1 连接数据库

使用MSSQL扩展连接数据库需要提供数据库服务器名、数据库名称、用户名和密码等信息。以下是一个简单的示例:

<?php

$serverName = "localhost\SQLEXPRESS";

$connectionOptions = array(

"Database" => "testDB",

"Uid" => "username",

"PWD" => "password"

);

$conn = sqlsrv_connect($serverName, $connectionOptions);

if ($conn === false) {

echo "连接失败!";

die(print_r(sqlsrv_errors(), true));

} else {

echo "连接成功!";

}

?>

注意:

$serverName变量的值是数据库服务器名和实例名组成的字符串,如果SQL Server安装的是默认实例,则可以仅写服务器名称;

"Database"参数指定要连接的数据库名称;

"Uid"和"PWD"参数指定登录数据库的用户名和密码;

连接成功之后,$conn变量将保存一个数据库连接资源。

4.2 查询数据

查询数据是使用MSSQL扩展操作数据库的主要方式。我们可以使用sqlsrv_query函数来执行一条SQL查询语句,并返回一个结果集资源,然后使用sqlsrv_fetch_array函数逐条读取查询结果。以下是一个简单的示例:

<?php

$result = sqlsrv_query($conn, "SELECT * FROM users;");

if ($result === false) {

echo "查询失败!";

die(print_r(sqlsrv_errors(), true));

} else {

while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {

echo $row['name'] . "<br/>";

}

sqlsrv_free_stmt($result);

}

?>

注意:

sqlsrv_query函数执行SQL查询语句,并返回一个结果集资源;

sqlsrv_fetch_array函数逐条读取结果集中的数据,第二个参数指定返回数据的格式(SQLSRV_FETCH_ASSOC表示返回关联数组);

使用sqlsrv_free_stmt函数释放结果集资源。

4.3 插入数据

插入数据是使用MSSQL扩展操作数据库的一种方式。我们可以使用sqlsrv_query函数执行一条INSERT语句,以添加一条新记录。以下是一个简单的示例:

<?php

$sql = "INSERT INTO users (name, age) VALUES (?, ?);";

$params = array("Tom", 18);

$stmt = sqlsrv_prepare($conn, $sql, $params);

if ($stmt === false) {

echo "插入失败!";

die(print_r(sqlsrv_errors(), true));

} else {

sqlsrv_execute($stmt);

echo "插入成功!";

sqlsrv_free_stmt($stmt);

}

?>

注意:

使用sqlsrv_prepare函数执行一条SQL语句,并返回一个预处理语句资源;

在SQL语句中需要使用占位符,以避免SQL注入漏洞;

使用sqlsrv_execute函数执行预处理语句,将参数传递给SQL查询;

使用sqlsrv_free_stmt函数释放预处理语句资源。

5. 总结

这篇文章介绍了如何启用和配置MSSQL扩展,以及使用MSSQL扩展连接并操作数据库。希望能够对初学者有所帮助。当然,MSSQL扩展也有一些其他的功能,读者可以通过进一步学习来掌握。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签