PHPトランザクションはどのように書くのでしょうか?

WBOY
リリース: 2016-06-23 14:13:44
オリジナル
948 人が閲覧しました

PHP でトランザクションを作成するにはどうすればよいですか? 現在、1 つの更新と 1 つの挿入があります。エラーは次のとおりです。

$db = new DbManager();	$conn = $db->getConnection();	$conn->set_charset("utf8");		if(mysqli_connect_errno())	{		echo 'error connect database! please content manager!';		exit;	}	//echo connection_status();	$tbNums = explode(',',$tbNum);		$conn->autocommit(FALSE);	$flag = true;	$a=0;	foreach($tbNums as $key => $value)	{		$updateBalance = "UPDATE T_SMS_TBNUM SET STATUS = 2 WHERE ID = ?";		$insertRelate = "INSERT INTO T_SMS_TBNUMRELATE (TBID,OWNCLIENTID,REALFEE,CREATETIME) VALUES(?,?,?,?)";						$stmtUpdateClient = $conn->prepare($updateBalance);		$stmtUpdateClient->bind_param('i',$value);		$ss = $stmtUpdateClient->execute();				$stmt = $conn->prepare($insertRelate);		$foura = 4;		$a++;		if($a!=0){			$value = 's';		}		$stmt->bind_param('iids',$value,$clientId,$foura,date('Y-m-d H:i:s'));		$boooo = $stmt->execute();		echo $ss.'+'.$boooo;		if($stmtUpdateClient->affected_rows <= 0 || $stmt->affected_rows <= 0)		{			echo $stmtUpdateClient->affected_rows.'|'.$stmt->affected_rows;			$flag = false;			break;		}	}		if(!$flag)		{			$conn ->rollback();			$conn -> autocommit(TRUE);			$conn->close();			return 'paylog false!';		}else		{			$conn->commit();			$conn -> autocommit(TRUE);			$conn->close();			return '1';		}
ログイン後にコピー


に返信します。ディスカッション (解決策)

if( $stmt->affected_rows <= 0 ||  ($masterId && $stmtLower->affected_rows <= 0))		{					$conn ->rollback();					$conn -> autocommit(TRUE);					$conn->close();			return 'unknow_error';		}else		{					$conn->commit();					$conn -> autocommit(TRUE);					$conn->close();			return '1';		}
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート