1. 简介
PDO (PHP数据对象) 是一种轻量级的、基于对象的PHP库,用来管理数据库,并且可以通过一个API来连接多种类型的数据库,支持的数据库类型包括MySQL、PostgreSQL、Oracle以及Microsoft SQL Server(MSSQL)等。在开发PHP应用程序时,使用PDO连接数据库可以让代码更加清晰、稳定和具有可维护性。
2. 准备工作
在使用PDO连接MSSQL服务器之前,需要先安装PDO扩展和MSSQL驱动程序。如果您使用的是Linux系统,可以使用系统包管理器直接安装PDO扩展和MSSQL驱动程序,例如在Ubuntu系统上,可以运行以下命令进行安装:
sudo apt-get install php-pdo
sudo apt-get install php7.0-sybase
如果您使用的是Windows系统,则需要在php.ini配置文件中启用pdo_sqlsrv扩展和sqlsrv驱动程序。打开php.ini文件,找到以下两行并把注释去掉:
extension=php_pdo_sqlsrv_56_ts.dll
extension=php_sqlsrv_56_ts.dll
3. 连接MSSQL数据库
连接MSSQL数据库需要使用PDO的“pdo_dsn”选项,这个选项包含了连接MSSQL服务器所需的所有参数。MSSQL数据库连接字符串的格式如下:
$dsn = "sqlsrv:Server=$serverName;Database=$databaseName;";
其中,“$serverName”是MSSQL服务器的主机名,可以是IP地址或者DNS名称,“$databaseName”是要连接的数据库的名称。例如,如果您要连接本地的MSSQL服务器,并且要连接名为“testdb”的数据库,dsn字符串应该为:
$dsn = "sqlsrv:Server=localhost;Database=testdb;";
3.1 建立连接
使用PDO连接MSSQL数据库,需要使用PDO的“PDO()”构造函数。该函数需要传递三个参数:dsn字符串、用户名和密码。例如,下面的代码演示了如何连接到MSSQL服务器:
$serverName = "localhost";
$databaseName = "testdb";
$username = "sa";
$password = "123456";
try {
$dbh = new PDO("sqlsrv:Server=$serverName;Database=$databaseName;", $username, $password);
}
catch (Exception $e) {
echo "Connection failed: " . $e->getMessage();
}
上面的代码在连接MSSQL服务器时,使用了“try…catch”块来捕获异常。如果连接失败,代码将会输出异常信息,否则将会返回一个PDO对象。
3.2 关闭连接
当不再需要连接时,需要使用PDO对象的“closeCursor()”方法来关闭连接。例如:
$dbh->closeCursor();
4. 查询MSSQL数据库
4.1 查询数据
查询MSSQL数据库需要使用PDO对象的“query()”方法。该方法需要传递一个SQL查询语句,例如:
$sql = "SELECT * FROM users";
$sth = $dbh->query($sql);
上面的代码查询了名为“users”的表中的所有内容,并返回了一个PDOStatement对象。我们可以遍历PDOStatement对象中的每一行,并使用“fetch()”方法将结果存储到一个PHP变量中,例如:
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
echo "ID: {$row['id']}
";
echo "Name: {$row['name']}
";
echo "Email: {$row['email']}
";
}
上面的代码遍历了PDOStatement对象中的每一行,并输出了每一行的“id”、“name”和“email”字段的值。PDO::FETCH_ASSOC是指查询结果以关联数组的形式返回。如果查询结果比较大,可以通过“fetch()”方法的第二个参数来指定一次返回多少行记录,例如:
while ($row = $sth->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT, $i)) {
echo "ID: {$row['id']}
";
echo "Name: {$row['name']}
";
echo "Email: {$row['email']}
";
$i++;
}
上面的代码指定每次返回1行记录,并使用第三个参数来指定从第$i行开始查询。
4.2 插入数据
插入数据到MSSQL数据库需要使用PDO对象的“exec()”方法。该方法需要传递一个SQL插入语句,例如:
$sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com')";
$dbh->exec($sql);
上面的代码向名为“users”的表中插入一行数据,其中“name”字段的值为“John Doe”,“email”字段的值为“john.doe@example.com”。
4.3 更新数据
更新MSSQL数据库中已有的数据需要使用PDO对象的“exec()”方法。该方法需要传递一个SQL更新语句,例如:
$sql = "UPDATE users SET name='Jane Doe' WHERE id=1";
$dbh->exec($sql);
上面的代码将名为“users”的表中的“id”字段为1的行的“name”字段的值更改为了“Jane Doe”。
4.4 删除数据
在MSSQL数据库中删除已有的数据需要使用PDO对象的“exec()”方法。该方法需要传递一个SQL删除语句,例如:
$sql = "DELETE FROM users WHERE id=1";
$dbh->exec($sql);
上面的代码删除了名为“users”的表中“id”字段为1的行。
5. 结论
PDO是一个强大的PHP库,可以帮助我们连接各种类型的数据库。本文介绍了如何使用PDO连接MSSQL数据库,并且列举了查询、插入、更新和删除MSSQL数据库中的数据的例子。如果您想了解更多关于PDO的内容,请查阅PDO的官方文档。