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 数据库。