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'; }