介绍
PHP是一种常用的服务器端编程语言,可以与多种数据库进行交互。MSSQL是一种常用的关系型数据库管理系统,常用于Windows平台上。
连接MSSQL数据库
安装MSSQL驱动
在PHP中连接MSSQL需要使用ODBC扩展或MSSQL扩展。ODBC扩展更加通用,支持多种数据库,但速度较慢。MSSQL扩展只能连接MSSQL数据库,但速度更快。下面以MSSQL扩展为例。
如果还没有安装MSSQL扩展,可以根据PHP版本下载对应的DLL文件,放到PHP的ext
目录中,并将其添加到php.ini
文件中。
// 下载php_sqlsrv.dll和php_pdo_sqlsrv.dll
// 根据PHP版本选择下载,如PHP7.4选择7.4.x版
// 下载地址:https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15
// 将下载的两个DLL文件放到PHP的ext目录中
// 打开php.ini文件
// 找到extension=php_sqlsrv.dll和extension=php_pdo_sqlsrv.dll所在的行
// 如果没有找到,可以在最后一行添加以下两行
extension=php_sqlsrv.dll
extension=php_pdo_sqlsrv.dll
连接数据库
连接MSSQL数据库需要指定数据库服务器名、数据库名、数据库用户名和密码。
<?php
$serverName = "localhost\\SQLEXPRESS"; // 数据库服务器名
$databaseName = "testdb"; // 数据库名
$username = "sa"; // 数据库用户名
$password = "password"; // 数据库密码
$connectionInfo = array(
"UID" => $username,
"PWD" => $password,
"Database" => $databaseName
);
$conn = sqlsrv_connect($serverName, $connectionInfo); // 连接数据库
if (!$conn) {
die("连接失败:" . sqlsrv_errors());
}
echo "连接成功";
?>
实现注册功能
创建用户表
在MSSQL中创建用户表,在其中添加用户名、密码等字段。
CREATE TABLE users (
id INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
username NVARCHAR(50) NOT NULL,
password NVARCHAR(50) NOT NULL,
email NVARCHAR(50) NOT NULL
);
提交注册信息
在Web应用程序中,可以通过表单提交用户注册信息。在PHP中,可以通过$_POST
变量获取表单提交的数据。
<form action="register.php" method="POST">
用户名:
<input type="text" name="username"><br>
密码:
<input type="password" name="password"><br>
邮箱:
<input type="text" name="email"><br>
<input type="submit" value="注册">
</form>
保存注册信息
在PHP中,通过sqlsrv_query
函数执行SQL语句。可以使用?参数化
的方式将值传入SQL语句中,避免SQL注入攻击。
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$sql = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)";
$params = array($username, $password, $email);
$stmt = sqlsrv_query($conn, $sql, $params);
if (!$stmt) {
die("插入数据失败:" . sqlsrv_errors());
}
echo "注册成功";
完整代码
最终,可以将上述代码整合为一个PHP文件,完成注册功能。
<?php
$serverName = "localhost\\SQLEXPRESS"; // 数据库服务器名
$databaseName = "testdb"; // 数据库名
$username = "sa"; // 数据库用户名
$password = "password"; // 数据库密码
$connectionInfo = array(
"UID" => $username,
"PWD" => $password,
"Database" => $databaseName
);
$conn = sqlsrv_connect($serverName, $connectionInfo); // 连接数据库
if (!$conn) {
die("连接失败:" . sqlsrv_errors());
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$sql = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)";
$params = array($username, $password, $email);
$stmt = sqlsrv_query($conn, $sql, $params);
if (!$stmt) {
die("插入数据失败:" . sqlsrv_errors());
}
echo "注册成功";
}
?>
<form action="register.php" method="POST">
用户名:
<input type="text" name="username"><br>
密码:
<input type="password" name="password"><br>
邮箱:
<input type="text" name="email"><br>
<input type="submit" value="注册">
</form>