在PHP中,获取MSSQL(Microsoft SQL Server)存储过程的输出参数通常需要使用`sqlsrv`扩展。以下是一个示例代码,展示了如何调用一个包含输出参数的MSSQL存储过程,并获取这些参数的值。
首先,确保你的PHP环境已经安装了`sqlsrv`扩展。
接下来,这是一个简单的例子,假设我们有一个名为`GetUserInfo`的存储过程,它接受一个输入参数(比如用户ID),并输出一个或多个参数(比如用户名和年龄)。
<?php
$serverName = "your_server_name"; // 服务器名
$connectionInfo = array( "Database"=>"your_database_name", "UID"=>"your_username", "PWD"=>"your_password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "连接成功。\n";
// 准备SQL语句,调用存储过程
$sql = "{call GetUserInfo (?, ?, ?)}";
$params = array(
array($userId, SQLSRV_PARAM_IN), // 输入参数
array(&$userName, SQLSRV_PARAM_OUT), // 输出参数
array(&$userAge, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_INT, SQLSRV_SQLTYPE_INTEGER) // 输出参数,指定PHP类型和SQL类型
);
// 调用存储过程
$stmt = sqlsrv_query($conn, $sql, $params);
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
// 获取输出参数的值
echo "用户名: " . $userName . "\n";
echo "年龄: " . $userAge . "\n";
// 释放语句和连接资源
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
} else {
echo "连接失败。\n";
die( print_r( sqlsrv_errors(), true));
}
?>
**注意**:
- `$userId` 应该被替换为你想要查询的用户ID的实际值。
- 输出参数`$userName`和`$userAge`在调用`sqlsrv_query`之前需要被声明,并设置为引用传递(通过在变量名前加上`&`)。
- 输出参数的类型可以通过`SQLSRV_PHPTYPE_`和`SQLSRV_SQLTYPE_`常量来指定,这有助于确保PHP变量正确地映射到SQL Server数据类型。
- 这个例子假设`GetUserInfo`存储过程接受一个输入参数和两个输出参数。根据你的实际存储过程,你可能需要调整SQL语句和参数数组。
- 始终检查`sqlsrv_query`的返回值来确认存储过程是否成功执行,并使用`sqlsrv_errors`来捕获和报告任何错误。