PHP写sqlserver事务,php调用sqlserver存储过程使用事务处理
第一次編寫
sqlserver存儲(chǔ)過程并在php里調(diào)用,把腦瓜都整大了,奮戰(zhàn)了一天多最后還是搞定了。
實(shí)現(xiàn)功能:在
sqlserver里面實(shí)現(xiàn)事務(wù)處理,保證數(shù)據(jù)庫(kù)操作安全;
接收sqlserver存儲(chǔ)過程輸出的各種狀態(tài)的值。
sqlserver里面的存儲(chǔ)過程如下:
ALTER PROC PK_Shop_Member
@nUserID INT,
@nMoney BIGINT,
@DATE DATETIME,
@nUserID2 INT,
@nResult INT OUTPUT//此變量裝載存儲(chǔ)過程輸出的值
WITH ENCRYPTION AS
BEGIN
-- 屬性設(shè)置
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里面調(diào)用如下:
$db_host='******';
$db_user='='******';
$db_pass='='******';
$db_name='='******';
$nResult= '99';//此處為定義接收存儲(chǔ)過程輸出的變量
$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); //為存儲(chǔ)過程添加一個(gè)輸出參數(shù)
if($rs=mssql_execute($stmt)){
if($nResult=='99')exit('99');//網(wǎng)絡(luò)異常
elseif($nResult=='2')exit('2');//'網(wǎng)絡(luò)異常
elseif($nResult=='3')exit('1');//成功
}else{
exit('3');//'網(wǎng)絡(luò)異常,交易失敗'
}
總結(jié)
以上是生活随笔為你收集整理的PHP写sqlserver事务,php调用sqlserver存储过程使用事务处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: l麒麟安装oracle,中标麒麟5.8x
- 下一篇: PHP实现列表页综合筛选功能,dede织