什么是PDO驱动?
PDO (PHP Data Objects) 是 PHP 5.1 引入的一个轻量级、统一的数据库访问接口,支持多种数据库类型。
PDO 驱动重写了 PHP 的数据库抽象层,提供了一个统一的 API,允许开发人员使用一种简单的方式来连接不同的数据库管理系统。
在 PHP 语言中,通过 PDO 类来实现 PHP 数据库编程,使程序员能够使用一致的方法访问 MySQL、Oracle、PostgreSQL 等数据库。
为什么要使用PDO连接MSSQL数据库?
PHP 5.3 及以前版本,原生的 mssql 扩展已经停止维护。而在 PHP 7以后的版本,mssql 扩展已经被完全移除。
因此,连接 MSSQL 数据库必须使用 PDO 扩展。
如何使用PDO连接MSSQL数据库?
安装PHP的PDO扩展
在 PHP 中使用 PDO 来连接 MSSQL,需要安装 SQL Server 的驱动程序。下载地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 。
安装之前需要检查一下 PHP 是否支持 PDO 扩展,如果没有支持,则需要安装。
#检查PDO扩展是否安装
php -m | grep PDO
#安装PDO扩展Ubuntu
sudo apt-get install php7.2-pdo
#安装PDO扩展CentOS
sudo yum install php72w-pdo
安装PHP的PDO_DBLIB扩展
在 PHP 中使用 PDO 来连接 MSSQL,需要安装 SQL Server 的驱动程序,常用的驱动是 PDO_DBLIB。PDO_DBLIB 扩展是 PHP 5.x 版本的数据库驱动程序,专门用于连接 MSSQL 数据库。
# 检查 php.ini 中是否有 pdo_dblib
grep -i pdo_dblib `php --ini`
# 安装 pdo_dblib
sudo apt-get install php7.x-sybase
sudo systemctl restart apache2
php -m | grep pdo_dblib
使用PDO连接MSSQL数据库
连接 MSSQL 数据库需要提供以下信息:
服务器 IP 或机器名称
数据库名称
用户名
密码
在 PDO 中,创建 PDO 对象来连接 MSSQL 数据库:
$dsn = "sqlsrv:Server=192.168.0.1;Database=testdb";
$user = "user1";
$pass = "pwd1";
try
{
$dbh = new PDO($dsn, $user, $pass);
}
catch (PDOException $e)
{
echo "Failed to get DB handle: " . $e->getMessage() . "\n";
exit;
}
其中,$dsn 是连接字符串,包括服务器和数据库名称。
$user 和 $pass 是登录数据库时的用户名和密码,用于验证身份。
代码示例
以下为完整连接 MSSQL 的代码示例:
<?php
$dsn = "sqlsrv:Server=192.168.0.1;Database=testdb";
$username = "user1";
$password = "pwd1";
try {
$conn = new PDO($dsn, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully\n";
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
$conn = null;
?>