使用PDO MSSQL驱动来操作MSSQL数据库

什么是PDO?

PDO是PHP Database Object的缩写,是PHP的一个数据库抽象层。利用PDO,我们可以轻松地使用不同的数据库,而不必去更改我们的代码,只需要更改数据库驱动即可。PDO支持的数据库种类非常多,包括MySQL、SQLite、Oracle、PostgreSQL等等,当然也包括本文要介绍的MSSQL数据库。

安装和配置PDO MSSQL驱动

安装PDO MSSQL驱动

在PHP版本5以上,PDO已经成为默认的扩展。通过phpinfo()函数可以查看当前是否安装了PDO扩展。

//查看phpinfo

phpinfo();

如果已经安装了PDO,我们只需要安装PDO MSSQL驱动就可以连接MSSQL数据库。

在Linux上,我们可以使用yum工具来安装FreeTDS驱动,它可以提供对MS SQL Server和Sybase的支持。

yum install freetds freetds-devel unixODBC unixODBC-devel

在Windows平台下,我们可以下载Microsoft的ODBC驱动,它可以提供对MS SQL Server的支持。

安装完成后,通过PDO连接MSSQL数据库的代码如下:

$pdo = new PDO("dblib:host={$host};dbname={$dbname}", $user, $password);

其中,$host、$dbname、$user、$password分别代表主机名、数据库名、用户名、密码。

配置PDO MSSQL驱动

在Linux上,我们需要在freetds.conf文件中配置ODBC驱动的信息。在Windows上,我们需要创建一个ODBC数据源。

Linux配置:

vim /etc/freetds.conf

[mssql]

host = your_hostname_or_ip

port = your_port

username = your_username

password = your_password

database = your_database

tds version = 8.0

Windows配置:

首先,我们需要在控制面板->管理工具->ODBC数据源中创建数据源。打开ODBC数据源,选择“系统DSN”选项卡,点击添加按钮,找到“SQL Server”数据源,点击下一步。

按照向导提示,配置数据源的名称、描述、主机名、数据库名、用户名、密码等信息,然后点击完成即可。

$pdo = new PDO("odbc:your_datasource_name", $user, $password);

其中,your_datasource_name是你创建的ODBC数据源名称。

使用PDO MSSQL驱动连接MSSQL数据库

连接到MSSQL数据库的代码如下:

$host = "localhost";

$dbname = "testdb";

$user = "sa";

$password = "password123";

//使用dblib驱动

$pdo = new PDO("dblib:host={$host};dbname={$dbname}", $user, $password);

//使用ODBC驱动

//$pdo = new PDO("odbc:your_datasource_name", $user, $password);

其中,我们使用PDO的构造函数,并传入连接参数。dblib是FreeTDS提供的驱动,ODBC是Microsoft提供的驱动。

连接成功后,我们可以执行SQL语句,查询数据库中的数据。

使用PDO MSSQL驱动执行SQL语句

查询数据

查询数据库表的数据,使用PDO的query方法:

$stmt = $pdo->query("SELECT * FROM products");

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

echo $row['id'] . ' ' . $row['name'] . ' ' . $row['price'] . "\n";

}

其中,query方法执行一条SQL语句,并返回一个PDOStatement对象。PDOStatement对象有一个fetch方法,可以从结果集中提取数据。

如果我们只需要获取一行数据,可以使用fetch方法的PDO::FETCH_ASSOC参数:

$row = $stmt->fetch(PDO::FETCH_ASSOC);

echo $row['id'] . ' ' . $row['name'] . ' ' . $row['price'] . "\n";

如果我们需要获取所有的数据行,可以使用fetchAll方法:

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($rows as $row) {

echo $row['id'] . ' ' . $row['name'] . ' ' . $row['price'] . "\n";

}

插入数据

插入数据库表的数据,可以使用PDO的prepare和execute方法。

$stmt = $pdo->prepare("INSERT INTO products (name, price) VALUES (?, ?)");

$stmt->execute(['Apple', 2.99]);

其中,prepare方法预处理SQL语句,execute方法执行SQL语句,execute方法的参数是一个包含参数值的数组。

更新数据

更新数据库表的数据,也可以使用PDO的prepare和execute方法。

$stmt = $pdo->prepare("UPDATE products SET price = ? WHERE name = ?");

$stmt->execute([3.99, 'Apple']);

其中,prepare方法预处理SQL语句,execute方法执行SQL语句,execute方法的参数是一个包含参数值的数组。

删除数据

删除数据库表的数据,同样可以使用PDO的prepare和execute方法。

$stmt = $pdo->prepare("DELETE FROM products WHERE name = ?");

$stmt->execute(['Apple']);

其中,prepare方法预处理SQL语句,execute方法执行SQL语句,execute方法的参数是一个包含参数值的数组。

小结

PDO是PHP的一个数据库抽象层,支持多种数据库,包括MSSQL。我们可以通过安装和配置PDO MSSQL驱动来连接MSSQL数据库,并使用PDO的query、prepare、execute等方法来执行SQL语句。在运用PDO MSSQL驱动操作MSSQL数据库时,我们需要注意安全性和可读性,尽量使用预处理语句和参数绑定,避免SQL注入攻击。

数据库标签