php中如何调用sql server,如何在PHP中使用PDO连接调用SQL Server存储过程?

调用过程使用

CALL

语法。

接下来是使用php 7.1.12、用于SQL Server 4.3.0+9904的php驱动程序、SQL Server 2012 Express Edition的工作示例。两者都是

{CALL sp_name}

EXEC sp_name

工作。

T-SQL:

CREATE PROCEDURE [dbo].[getAllUser]

AS BEGIN

SELECT 'Result from stored procedure.' AS [ResultText]

END

CREATE PROCEDURE [dbo].[getAllEvent]

@FromDate date,

@ToDate date,

@UserID int

AS

BEGIN

SELECT

@FromDate AS FromDate,

@ToDate AS ToDate,

@UserID AS UserID

END

PHP:

# Connection info

$hostname = 'server\instance,port';

$dbname = 'database';

$username = 'username';

$pw = 'password';

# Connection

try {

$dbh = new PDO("sqlsrv:server=$hostname;Database=$dbname", $username, $pw);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch( PDOException $e ) {

die( "Error connecting to SQL Server. ".$e->getMessage());

}

# First procedure

try {

echo "Procedure: getAllUser"."
";

$sql = "{CALL getAllUser}";

#$sql = "EXEC getAllUser";

$stmt = $dbh->query($sql);

# If your stored procedure returns information about records affected, fetch next result set

$stmt->nextRowset();

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

foreach($row as $name => $value) {

echo $name.": ".$value."
";

}

}

echo "
";

} catch( PDOException $e ) {

die( "Error executing stored procedure: ".$e->getMessage());

}

$stmt = null;

# Second procedure

try {

echo "Procedure: getAllEvent"."
";

$sql = "{CALL getAllEvent(?, ?, ?)}";

#$sql = "exec getAllEvent ?, ?, ?";

$fromDate = '2008-08-03';

$toDate = '2008-08-05';

$userID = 123;

$stmt = $dbh->prepare($sql);

$stmt->bindParam(1, $fromDate);

$stmt->bindParam(2, $toDate);

$stmt->bindParam(3, $userID);

$stmt->execute();

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

foreach($row as $name => $value) {

echo $name.": ".$value."
";

}

}

echo "
";

} catch( PDOException $e ) {

die( "Error connecting to SQL Server" );

}

$stmt = null;

# End

$dbh = null;

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP连接SQL Server调用存储过程,你可以使用PDOPHP Data Objects)或者SQLSRV扩展来实现。下面是一个使用PDO连接SQL Server调用存储过程的示例代码: ```php <?php $serverName = "localhost"; // SQL Server服务器名称 $connectionOptions = array( "Database" => "YourDatabase", // 数据库名称 "Uid" => "YourUsername", // 用户名 "PWD" => "YourPassword" // 密码 ); // 建立连接 $conn = new PDO("sqlsrv:Server=$serverName;", $connectionOptions); // 调用存储过程 $sql = "{call YourStoredProcedure()}"; $stmt = $conn->prepare($sql); $stmt->execute(); // 处理结果集 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { // 处理每行数据 print_r($row); } // 关闭连接 $conn = null; ?> ``` 请注意替换示例代码的`$serverName`、`$connectionOptions`、`Database`、`Uid`、`PWD`、`YourStoredProcedure()`等参数为你实际的数据库连接信息和存储过程名称。 如果你选择使用SQLSRV扩展,你可以使用以下示例代码: ```php <?php $serverName = "localhost"; // SQL Server服务器名称 $connectionOptions = array( "Database" => "YourDatabase", // 数据库名称 "Uid" => "YourUsername", // 用户名 "PWD" => "YourPassword" // 密码 ); // 建立连接 $conn = sqlsrv_connect($serverName, $connectionOptions); // 调用存储过程 $sql = "{call YourStoredProcedure()}"; $stmt = sqlsrv_query($conn, $sql); // 处理结果集 while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { // 处理每行数据 print_r($row); } // 关闭连接 sqlsrv_free_stmt($stmt); sqlsrv_close($conn); ?> ``` 同样,请替换示例代码的`$serverName`、`$connectionOptions`、`Database`、`Uid`、`PWD`、`YourStoredProcedure()`等参数为你实际的数据库连接信息和存储过程名称。 这些示例代码仅供参考,你需要根据实际情况进行相应的修改和适配。同时,请确保你已经安装了相应的驱动和扩展,以便与SQL Server进行连接和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值