How to write PHP transactions? How to write PHP transactions? I am an update and an insert
The code is as follows. the error is that a value type error occurs and the transaction does not work.
$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';}
Reply to discussion (solution)
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';}