PHP连接MSSQL数据库快速开启

1. 前言

PHP语言是一个非常经典的服务器端语言,在Web服务器中使用相当广泛。而MSSQL数据库是微软推出的一种关系型数据库,由于其带有各种应用程序,包括广泛使用的业务软件,它是非常流行的商业数据库之一。在本文中,我们将学习如何通过PHP脚本连接MSSQL数据库。

2. 环境配置

2.1. 安装SQL Server驱动程序

在PHP 7之前,连接MSSQL需要使用mssql拓展。从PHP 7开始,Microsoft在GitHub上发布了一个msphpsql扩展来连接SQL Server和Azure SQL。您可以从以下地址下载。

下载地址:https://github.com/Microsoft/msphpsql/releases/

下载完成后,应该解压缩下载文件(php_pdo_sqlsrv_7_nts_x64.zip)中的DLL文件并将其放置在扩展目录中。然后在php.ini文件中启用扩展。

extension=php_pdo_sqlsrv_7_nts_x64.dll

2.2. 配置ODBC数据源

在PHP中使用ODBC数据源(Open Database Connectivity)连接MSSQL服务器。因此,我们需要先设置ODBC数据源。进入“控制面板” -> “Administrative Tools” -> “ODBC Data Sources (64-bit)”。

在“ODBC Data Source Administrator(64-bit)”窗口中,单击“添加”按钮,选择“SQL Server Native Client 11.0”并单击“完成”按钮。

在此过程中,您需要配置以下信息:

名称:您的数据源的名称。

描述:可选的数据源描述。

服务器:您要连接的SQL Server的名称或IP地址。

身份验证:此数据库的身份验证类型,可以是“SQL Server身份验证”或“Windows身份验证”。

如果您选择“SQL Server身份验证”,则需要提供用户名和密码。

单击“下一步”按钮后,看到这个:

选择您要设置的默认数据库。

单击“下一步”按钮后,看到这个:

更改数据源设置,如果需要。

在这一步中,您可以更改以下设置:

默认ID应用程序:可选应用程序的名称,默认情况下为空。

语言:ODBC驱动程序使用的语言设置。

自动提交:ODBC驱动程序需要提交每个SQL语句。如果SQL语句没有提交,它将会自动提交。

完成在“ODBC Data Source Administrator”中的数据源设置后,可以在连接代码中使用数据源名称进行连接。

3. 连接MSSQL数据库

在PHP 7中,可以使用PDO类连接Microsoft SQL Server数据库。PDO(PHP Data Objects)是PHP的一个抽象层,允许开发人员以统一的方式访问多个数据库类型。

下面是连接MSSQL数据库的示例代码:

$serverName = "localhost";

$database = "MyDatabase";

$username = "sa";

$password = "your_password";

$dsn = "sqlsrv:server=$serverName;Database=$database";

try {

$conn = new PDO($dsn, $username, $password);

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "Connected successfully.";

} catch (PDOException $e) {

echo "Connection failed: " . $e->getMessage();

}

在此示例中,我们首先定义了MSSQL服务器、数据库、用户名和密码。然后,我们创建一个DSN(数据源名称)并使用PDO类尝试连接MSSQL数据库。如果连接成功,将输出“Connected successfully.”跟随着 PDO::ATTR_ERRMODE和 ERRMODE_EXCEPTION 属性,这样连接出错时会抛出PDO异常。

4. 执行SQL查询

连接到MSSQL数据库后,可以使用PDO对象执行SQL查询。您可以使用查询语句执行各种任务,例如创建表、插入数据、更新数据和删除数据。

下面是一个示例,通过PDO对象从MSSQL数据库中检索数据:

$stmt = $conn->query("SELECT * FROM orders");

while ($row = $stmt->fetch()) {

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

}

在此示例中,我们使用PDO对象执行查询。结果集存储在$stmt变量中。然后,我们使用while循环迭代结果集并输出其中的行。

4.1. PDO预处理语句

在PDO中,可以使用预处理语句执行SQL查询。预处理语句允许您通过“?”占位符安全地为查询赋值。

下面是一个示例,通过PDO对象使用预处理语句从MSSQL数据库中检索数据:

$stmt = $conn->prepare("SELECT * FROM orders WHERE order_number = ?");

$stmt->execute(array("12345"));

while ($row = $stmt->fetch()) {

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

}

在此示例中,我们首先使用预处理语句定义查询。然后,我们使用数组将值传递给占位符。最后,我们使用while循环迭代结果集并输出其中的行。

4.2. PDO事务

使用PDO对象还可以执行事务。事务是一组操作,可以在数据库中作为原子执行。如果其中一个操作失败,则将回滚整个事务。

下面是一个示例,通过PDO对象插入值并使用事务更新MSSQL数据库:

try {

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$conn->beginTransaction();

$conn->exec("INSERT INTO orders (order_number, customer_name, order_date)

VALUES ('12345', 'John Doe', '2019-01-01')");

$conn->exec("UPDATE messages SET message = 'Your order has been updated.' WHERE id = 1");

$conn->commit();

echo "Transaction completed successfully.";

} catch (PDOException $e) {

$conn->rollback();

echo "Transaction failed: " . $e->getMessage();

}

在此示例中,我们首先使用setAttribute方法将PDO的错误模式设置为异常模式。然后,我们使用beginTransaction方法启动事务并使用exec方法插入值和更新值,并使用commit方法提交事务。如果遇到任何异常,则使用$errorMsg回滚事务。

5. 结论

在本文中,我们学习了如何通过PHP脚本连接MSSQL数据库。我们还看到了如何使用PDO对象执行各种任务,例如创建表、插入数据、更新数据和删除数据。

作为一个通用的抽象层,PDO可以在许多不同的数据库之间共享通用的API和函数,从而使MSSQL数据库的使用更加容易和方便。

数据库标签