什么是MSSQL
MSSQL是一款由微软公司开发的关系型数据库管理系统,它可以在Microsoft Windows操作系统上运行。MSSQL以其易于使用、可扩展性以及强大的功能而受到广泛的欢迎。很多企业都使用MSSQL作为其企业级应用程序的后台数据库。
PHP连接MSSQL数据库
要连接MSSQL数据库,我们需要使用PHP提供的ODBC拓展。ODBC全称为“Open Database Connectivity”,翻译过来就是“开放式数据库连通”,它是一种可以让不同类型的数据库之间互相通信的标准。有了ODBC,我们就可以用同样的PHP代码连接各种不同的数据库。
安装ODBC拓展
如果你的PHP安装包中没有ODBC拓展,那么需要手动安装。下面是安装步骤:
# 安装unixODBC-devel依赖
yum -y install unixODBC-devel
# 下载最新的ODBC扩展,当前为odbc-2.3.9
wget https://pecl.php.net/get/odbc-2.3.9.tgz
# 解压、编译、安装
tar -zxvf odbc-2.3.9.tgz
cd odbc-2.3.9
phpize
./configure --with-unixODBC=shared,/usr
make && make install
执行以上命令后,odbc.so文件会被安装在/usr/local/lib/php/extensions/no-debug-non-zts-XXXXXXXX目录下。要启用ODBC拓展,需要在php.ini文件中加入一行:
extension=odbc.so
连接MSSQL数据库
使用ODBC拓展连接MSSQL数据库,需要使用PHP Data Objects(PDO)作为底层抽象层。PDO是一种通用的数据库操作抽象层,它提供了一种统一的接口并支持各种不同类型的数据库。PDO的好处是可以将代码从特定的数据库API中解耦出来,从而提高了代码重用性和可移植性。
下面是连接MSSQL数据库的代码示例:
<?php
$server = "localhost\\SQLEXPRESS";
$database = "testdb";
$username = "sa";
$password = "password";
try {
$dbh = new PDO("odbc:Driver={SQL Server};Server=$server;Database=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
在以上代码中,我们首先指定了MSSQL服务器的名称,在这个例子中我们使用了localhost\SQLEXPRESS。接下来指定了要连接的数据库名称、用户名和密码。需要注意的是,在使用PDO连接MSSQL的时候,需要指定odbc:Driver={SQL Server}作为DSN(Database Source Name)。
PHP读写MSSQL数据库
连接成功之后,我们就可以对MSSQL数据库进行读写操作。
查询数据
我们可以使用PDO提供的query()方法来执行查询。下面是一个查询数据的例子:
<?php
$stmt = $dbh->query("SELECT * FROM users");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $row) {
echo "name: " . $row['name'] . "<br>";
echo "email: " . $row['email'] . "<br>";
}
?>
在以上代码中,我们先执行了一条SELECT语句,然后使用fetchAll()方法获取结果集中的所有数据。最后通过循环遍历每一行数据,并输出每一列的值。
插入数据
我们可以使用PDO提供的prepare()方法以及bindParam()方法来插入数据。下面是一个插入数据的例子:
<?php
$name = "Tom";
$email = "tom@example.com";
$stmt = $dbh->prepare("INSERT INTO users(name, email) VALUES(:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->execute();
echo "Records inserted successfully";
?>
在以上代码中,我们首先定义了$name和$email变量,然后使用prepare()方法准备一条INSERT语句。接下来使用bindParam()方法将变量绑定到语句中的占位符上,并执行execute()方法来执行语句。最后输出插入数据的信息。
更新数据
我们可以使用PDO提供的prepare()方法以及bindParam()方法来更新数据。下面是一个更新数据的例子:
<?php
$name = "Tom";
$email = "newtom@example.com";
$id = 1;
$stmt = $dbh->prepare("UPDATE users SET email=:email WHERE id=:id AND name=:name");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':id', $id);
$stmt->execute();
echo $stmt->rowCount() . " record(s) updated successfully";
?>
在以上代码中,我们首先定义了$name、$email和$id变量,然后使用prepare()方法准备一条UPDATE语句。接下来使用bindParam()方法将变量绑定到语句中的占位符上,并执行execute()方法来执行语句。最后输出更新数据的信息。
删除数据
我们可以使用PDO提供的prepare()方法以及bindParam()方法来删除数据。下面是一个删除数据的例子:
<?php
$name = "Tom";
$email = "tom@example.com";
$stmt = $dbh->prepare("DELETE FROM users WHERE name=:name AND email=:email");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->execute();
echo $stmt->rowCount() . " record(s) deleted successfully";
?>
在以上代码中,我们首先定义了$name和$email变量,然后使用prepare()方法准备一条DELETE语句。接下来使用bindParam()方法将变量绑定到语句中的占位符上,并执行execute()方法来执行语句。最后输出删除数据的信息。
总结
PDO提供了一种简单而又强大的方式来连接MSSQL数据库,并且可以进行各种数据操作。使用PDO可以使代码更加具有可移植性和重用性。如果你使用的是MSSQL数据库,那么PDO提供的ODBC拓展是一个不错的选择。