1
mysqli prepared statements와 함께 sql 트랜잭션을 사용하는 방법을 알아 내려고하고 있습니다. 여러 준비된 문 (OO가 아닌)을 사용하는 예제를 찾을 수 없었으므로 트랜잭션을 사용하는 방법을 잘 모르겠습니다. 이것은 가장 가까운 내가 이해할 수 : 그것은 심지어 작동한다면 나도 몰라,트랜잭션이있는 여러 mysqli 준비 문
mysqli_autocommit($database, FALSE);
$transferq = 'INSERT INTO money (user_id, bank, onhand, type, amount, source) VALUES (?, ?, ?, ?, ?, ?)';
$transferstmt = mysqli_stmt_init($database);
mysqli_stmt_prepare($transferstmt, $transferq);
mysqli_stmt_bind_param($transferstmt, 'iiisis', $userid, $newbank, $newmoney, $type, $amount, $source);
mysqli_stmt_execute($transferstmt);
$insertq = 'UPDATE users SET money=?, bank=? WHERE user_id=' . $userid . ' LIMIT 1';
$insertstmt = mysqli_stmt_init($database);
mysqli_stmt_prepare($insertstmt, $insertq);
mysqli_stmt_bind_param($insertstmt, 'ii', $newmoney, $newbank);
mysqli_stmt_execute($insertstmt);
mysqli_commit($database);
을하지만. 가장 큰 문제는 쿼리가 실패했는지 여부 (그리고 커밋 여부)를 확인하는 방법을 잘 모르겠다는 것입니다. 내가 생각했던 예를 보았습니다.
if(mysqli_stmt_execute($stmt)){
mysqli_commit($database);
}else{
mysqli_rollback($database);
}
그러나 실제로 실행할 준비가 된 명령문이 여러 개 있기 때문에 실제로 그렇게 할 수는 없습니다.
어떻게 작동하나요?