1. 简介
PHP是一种开源的脚本语言,在WEB应用程序中使用非常广泛。作为一种服务器端语言,PHP与各种类型的数据库进行交互是必不可少的。MS SQL Server作为一个非常流行的企业级数据库之一,也是PHP可以连接的数据库之一。在本文中,我们将介绍如何使用PHP连接MS SQL Server数据库,并执行一些基本的查询操作。
2. 配置MS SQL数据库
在使用PHP连接MS SQL Server数据库前,我们需要先确保MS SQL Server数据库正确配置并且已经在运行。可以使用SQL管理工具来配置和管理MS SQL Server数据库。在配置完成后,需要创建一个用户,并对该用户授予访问数据库的权限。例如,我们创建了一个名为“test”的数据库,并创建了一个名为“user”的用户,并授予选择数据库的权限。
3. PHP连接MS SQL数据库
在MS SQL Server数据库配置完成并创建了用户后,我们使用PHP代码来连接MS SQL Server数据库:
// 建立连接
$serverName = "localhost"; // 服务器名
$connectionInfo = array( "Database"=>"test", "UID"=>"user", "PWD"=>"password" ); // 数据库信息
$conn = sqlsrv_connect( $serverName, $connectionInfo );
// 检查连接
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true ) );
} else {
echo "连接成功!";
}
在这段代码中,我们使用了sqlsrv_connect()函数来建立与MS SQL Server数据库的连接。通常需要传递两个参数:服务器名和数据库信息,其中包括:数据库名、用户名和密码。如果连接失败,将输出连接错误信息;如果连接成功,将输出“连接成功!”。
4. 查询MS SQL数据库
连接成功后,我们就可以使用PHP代码来执行查询语句并获得MS SQL Server数据库的数据。例如,查询一个名为“users”的表中的所有行:
// 查询
$sql = "SELECT * FROM users"; // 查询语句
$stmt = sqlsrv_query( $conn, $sql ); // 执行查询并获得结果集
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true ) );
} else {
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) {
echo $row['name']." ".$row['age']."
";
}
}
在这段代码中,我们使用了sqlsrv_query()函数来执行查询语句,并分别通过sqlsrv_fetch_array()函数和SQLSRV_FETCH_ASSOC参数来循环获取每一行数据。输出将为名为“users”的表中所有行的“name”和“age”字段值。
4.1 使用参数查询
使用参数查询可以有效地防止SQL注入攻击,并提高查询效率。这可以通过将参数值绑定到查询语句中来实现。例如,查询名为“users”的表中名字是“Tom”的行:
// 带参数查询
$name = "Tom";
$sql = "SELECT * FROM users WHERE name = ?";
$params = array( $name );
$stmt = sqlsrv_query( $conn, $sql, $params );
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true ) );
} else {
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) {
echo $row['name']." ".$row['age']."
";
}
}
在这段代码中,我们使用了“?”作为参数占位符,并将参数值绑定到查询语句中。这样,当参数值包含恶意SQL代码时,它们将被视为文本而不是可执行代码。此外,如果多次执行相同的查询,将使用相同的SQL语句和计划,从而提高了查询的效率。
4.2 使用存储过程
使用存储过程可以将SQL代码封装到单个过程中,并且可以接受和返回参数值。这可以极大地减少网络流量和查询延迟,并且让代码更加清晰和易于维护。例如,我们可以使用一个名为“get_users”的存储过程来获取所有用户信息:
CREATE PROCEDURE get_users AS
BEGIN
SELECT * FROM users
END
在PHP中,我们可以使用sqlsrv_prepare()函数和sqlsrv_execute()函数来执行存储过程,并将参数绑定到输入和输出变量中。例如:
// 存储过程
$sql = "{CALL get_users}";
$stmt = sqlsrv_prepare( $conn, $sql, array(), array("Scrollable"=>"buffered") );
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true ) );
}
sqlsrv_execute( $stmt );
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) {
echo $row['name']." ".$row['age']."
";
}
在这段代码中,我们首先使用sqlsrv_prepare()函数来准备一个语句并将结果集存储在一个变量中;然后,使用sqlsrv_execute()函数执行查询并将结果集输出。值得注意的是,我们还要在sqlsrv_prepare()函数中传递一个空数组和一个包含“Scrollable”参数的数组,以便使结果集在缓冲模式下运行,以便更轻松地访问结果集。
5. 结论
在本文中,我们学习了如何使用PHP连接MS SQL Server数据库,并执行一些基本的查询操作。我们了解了如何配置MS SQL Server数据库,如何使用PHP代码来连接数据库并执行查询语句,如何使用参数查询和存储过程以提高查询效率。PHP和MS SQL Server都是非常强大和灵活的工具,它们的结合可以使我们更轻松地管理数据并构建出更加松耦合、高性能的WEB应用程序。