PHP 和 MSSQL 扩展库无缝集成

PHP 和 MSSQL 扩展库无缝集成

在开发 Web 应用程序时,我们经常需要连接到数据库以存储和检索数据。虽然 MySQL 和 PostgreSQL 是最受欢迎的关系数据库管理系统 (RDBMS),但还有一些企业级应用程序依赖于 Microsoft SQL Server (MSSQL)。

如果你是 PHP 开发人员,那么你需要使用 PHP 和 MSSQL 扩展库无缝集成来连接到 MSSQL 数据库。在本文中,我们将了解如何安装和配置 PHP 和 MSSQL 扩展库,以及如何使用 PHP 脚本连接到 MSSQL 数据库。

1. 安装和配置 MSSQL 扩展库

在开始之前,你需要安装 Microsoft ODBC 驱动程序和 UnixODBC 驱动程序。你可以使用以下命令安装它们:

sudo apt-get update

sudo apt-get install unixodbc-dev msodbcsql17

安装完成后,你可以检查是否成功安装 UnixODBC 驱动程序,使用以下命令:

odbcinst -j

这将输出 UnixODBC 的版本以及 ODBC 驱动程序和数据源的路径。

接下来,你需要安装 PHP MSSQL 扩展库。可以使用以下命令:

sudo apt-get install php7.2-mssql

如果你使用的是不同版本的 PHP,请相应地更改版本号。

当安装完成后,将扩展库添加到 /etc/php/7.2/cli/php.ini 或 /etc/php/7.2/apache2/php.ini 文件中,这取决于你使用的是哪个 Web 服务器。你可以使用以下命令打开文件并添加扩展库:

sudo nano /etc/php/7.2/cli/php.ini

在文件的末尾添加以下行:

extension=php_mssql.so

保存并关闭文件后,重启你的 Web 服务器:

sudo service apache2 restart

现在,你已经成功安装和配置了 PHP MSSQL 扩展库。

2. 连接到 MSSQL 数据库

一旦你成功安装和配置了 MSSQL 扩展库,你可以使用以下代码连接到 MSSQL 数据库:

$serverName = "serverName\DatabaseName";

$connectionOptions = array(

"Database" => "DatabaseName",

"Uid" => "UserName",

"PWD" => "Password"

);

//Establishes the connection

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

你需要将 serverName 替换为你的服务器名称和数据库名称,UserName 替换为你的用户名,Password 替换为你的密码。

一旦你建立了连接,你可以执行 SQL 查询。以下代码演示如何执行查询:

$tsql= "SELECT * FROM MyTable";

$getResults= sqlsrv_query($conn, $tsql);

if ($getResults == FALSE)

die(FormatErrors(sqlsrv_errors()));

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

echo ($row['Column1'] . " " . $row['Column2'] . " " . $row['Column3'] . PHP_EOL);

}

sqlsrv_free_stmt($getResults);

在这个例子中,我们检索“MyTable”表中的所有行,并将这些行和它们的列值打印到屏幕上。

2.1 参数化查询

当你执行 SQL 查询时,最好避免将用户提供的数据直接插入到 SQL 查询中,以避免 SQL 注入攻击。相反,你应该使用参数化查询。

以下代码演示如何执行参数化查询:

$tsql= "SELECT * FROM MyTable WHERE Column1 = ?";

$params = array("Value1");

$getResults= sqlsrv_query($conn, $tsql, $params);

if ($getResults == FALSE)

die(FormatErrors(sqlsrv_errors()));

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

echo ($row['Column1'] . " " . $row['Column2'] . " " . $row['Column3'] . PHP_EOL);

}

sqlsrv_free_stmt($getResults);

在这个例子中,我们将参数“Value1”传递到参数化查询中。这将帮助我们防止 SQL 注入攻击。

2.2 错误处理

当你执行 SQL 查询时,你可能会遇到错误。以下代码演示如何处理错误:

function FormatErrors( $errors )

{

/* Display errors. */

echo "Error information:
";

foreach ( $errors as $error )

{

echo "SQLSTATE: ".$error['SQLSTATE']."
";

echo "Code: ".$error['code']."
";

echo "Message: ".$error['message']."
";

}

}

$getResults= sqlsrv_query($conn, $tsql);

if ($getResults == FALSE)

die(FormatErrors(sqlsrv_errors()));

在这个例子中,我们定义了一个名为“FormatErrors”的函数,该函数将 SQL 查询中的错误信息格式化并将其显示在屏幕上。

结论

在本文中,我们了解了如何安装和配置 PHP 和 MSSQL 扩展库,以及如何使用 PHP 脚本连接到 MSSQL 数据库。通过理解这些基础知识,你可以轻松地在你的 PHP 项目中集成 MSSQL 数据库。

数据库标签