PHP写sqlserver事务,php调用sqlserver存储过程使用事务处理

第一次编写

sqlserver存储过程并在php里调用,把脑瓜都整大了,奋战了一天多最后还是搞定了。

实现功能:在

sqlserver里面实现事务处理,保证数据库操作安全;

接收sqlserver存储过程输出的各种状态的值。

sqlserver里面的存储过程如下:

ALTER PROC PK_Shop_Member

@nUserID INT,

@nMoney BIGINT,

@DATE DATETIME,

@nUserID2 INT,

@nResult INT OUTPUT//此变量装载存储过程输出的值

WITH ENCRYPTION AS

BEGIN

-- 属性设置

SET NOCOUNT ON

BEGIN TRY

BEGIN TRANSACTION T

UPDATE GaScoInfo SET Sco = Sco-@nMoney WHERE USER=@nUserID

UPDATE [GameUser].[dbo].[Accounts] SET Mem = '1',MemberOverD = @DATE WHERE USER=@nUserID2

COMMIT TRANSACTION T

SET @nResult=3

END TRY

BEGIN CATCH

ROLLBACK TRANSACTION T

SET @nResult=2

END CATCH

END

RETURN 0

GO

php里面调用如下:

$db_host='******';

$db_user='='******';

$db_pass='='******';

$db_name='='******';

$nResult= '99';//此处为定义接收存储过程输出的变量

$db_connect=mssql_connect($db_host,$db_user,$db_pass);

$db_select=mssql_select_db($db_name,$db_connect);

$stmt = mssql_init("PK_Shop_Member", $db_connect);

mssql_bind($stmt,"@nUserID",'111',SQLINT4,FALSE,FALSE,30);

mssql_bind($stmt,"@nMoney",'222',SQLFLT8,FALSE,FALSE,30);

mssql_bind($stmt,"@Date",'2012-4-2 20:10:56',SQLVARCHAR,FALSE,FALSE,30);

mssql_bind($stmt,"@nUserID2",'465',SQLINT4,FALSE,FALSE,30);

mssql_bind($stmt,"@nResult",$nResult,SQLINT4,TRUE,FALSE,30); //为存储过程添加一个输出参数

if($rs=mssql_execute($stmt)){

if($nResult=='99')exit('99');//网络异常

elseif($nResult=='2')exit('2');//'网络异常

elseif($nResult=='3')exit('1');//成功

}else{

exit('3');//'网络异常,交易失败'

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值