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.dll和php_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扩展也有一些其他的功能,读者可以通过进一步学习来掌握。