1. 前言
在开发过程中,我们经常需要连接到数据库并进行数据操作,而PDO是PHP中比较常用的数据库操作扩展。本文将介绍如何使用PDO操作MSSQL数据库。
2. 环境准备
在使用PDO操作MSSQL数据库之前,需要先安装MSSQL PDO扩展以及SQL Server驱动程序。如果使用Windows系统,则需要安装SQL Server Native Client驱动程序,在Linux系统上则需要安装FreeTDS驱动程序。以CentOS系统为例,安装FreeTDS驱动程序的命令如下:
$ yum install freetds freetds-devel
另外,还需要在php.ini文件中启用MSSQL PDO扩展,找到以下两行,去掉前面的分号即可:
;extension=php_pdo_mssql.dll
;extension=php_sqlsrv.dll
3. PDO连接MSSQL
3.1 创建PDO实例
使用PDO连接MSSQL数据库需要指定ODBC数据源名称,然后创建PDO实例,代码如下:
$dsn = 'odbc:Driver=FreeTDS;Server=127.0.0.1;Port=1433;Database=test';
$user = 'username';
$password = 'password';
try {
$pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
die('PDO Connection failed: '.$e->getMessage());
}
以上代码指定了ODBC数据源名称为“test”,服务器IP为“127.0.0.1”,端口号为“1433”,以及数据库的用户名和密码。如果连接失败会抛出PDOException异常。
3.2 设置PDO属性
为了更好的进行数据库操作,我们可以设置PDO的属性,如设定错误模式、获取自增ID的方法等,代码如下:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 错误模式为抛出异常
$stmt = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
$stmt->execute(array(':name' => 'John', ':age' => 18));
$id = $pdo->lastInsertId(); // 获取自增ID
以上代码指定PDO的错误模式为抛出异常,之后预处理一条INSERT语句,并执行,使用PDO的lastInsertId方法获取自增ID。
4. PDO操作MSSQL数据库
4.1 查询数据
查询MSSQL数据库中的数据,可以使用PDO的query方法执行一个SQL查询,代码如下:
$stmt = $pdo->query("SELECT * FROM users WHERE age >= 18");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "name: " . $row['name'] . ", age: " . $row['age'] . "<br />";
}
以上代码使用PDO的query方法执行一条SELECT语句,之后使用fetch方法循环取出每一行数据,并输出名称和年龄。
4.2 插入数据
插入数据可以使用PDO的prepare方法预处理一条INSERT语句,然后执行execute方法,代码如下:
$stmt = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
$stmt->execute(array(':name' => 'John', ':age' => 18));
以上代码预处理一条INSERT语句,之后使用execute方法执行,数组中的键名为占位符,值为要插入的数据。
4.3 更新数据
更新数据可以使用PDO的prepare方法预处理一条UPDATE语句,然后执行execute方法,代码如下:
$stmt = $pdo->prepare("UPDATE users SET age = :age WHERE name = :name");
$stmt->execute(array(':age' => 20, ':name' => 'John'));
以上代码预处理一条UPDATE语句,之后使用execute方法执行,数组中的键名为占位符,值为要更新的数据。
4.4 删除数据
删除数据可以使用PDO的prepare方法预处理一条DELETE语句,然后执行execute方法,代码如下:
$stmt = $pdo->prepare("DELETE FROM users WHERE name = :name");
$stmt->execute(array(':name' => 'John'));
以上代码预处理一条DELETE语句,之后使用execute方法执行,数组中的键名为占位符,值为要删除的数据。
5. 总结
PDO是PHP开发中常用的数据库操作扩展,本文介绍了如何使用PDO操作MSSQL数据库,包括连接数据库、设置PDO属性以及增删改查数据。