>백엔드 개발 >PHP 문제 >PHP에서 거래를 삭제하는 방법

PHP에서 거래를 삭제하는 방법

藏色散人
藏色散人원래의
2022-11-22 09:19:291455검색

PHP 트랜잭션을 삭제하는 방법: 1. "autocommit(false)" 메소드를 사용하여 데이터베이스 자동 제출을 비활성화합니다. 2. 모든 작업 문이 성공하면 "commit()"을 통해 데이터베이스에 제출합니다. 작업이 실패하면 "rollback()" 메서드를 사용하여 삭제를 롤백할 수 있습니다.

PHP에서 거래를 삭제하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, Dell G3 컴퓨터.

PHP 거래를 삭제하는 방법은 무엇입니까?

php 트랜잭션 처리 transaction

MySQL 트랜잭션은 주로 대규모 작업과 복잡성이 높은 데이터를 처리하는 데 사용됩니다. 예를 들어 인사관리시스템에서 사람을 삭제하면 그 사람의 기본정보도 함께 삭제해야 하고, 사서함, 물품 등 그 사람과 관련된 정보도 함께 삭제해야 한다. 이런 식으로 이들 데이터베이스는 작업문은 거래를 구성합니다.

MySQL에서는 Innodb 데이터베이스 엔진을 사용하는 데이터베이스 또는 테이블만 트랜잭션을 지원합니다.

트랜잭션 처리를 사용하여 데이터베이스의 무결성을 유지하고 일괄 SQL 문이 모두 실행되거나 전혀 실행되지 않도록 할 수 있습니다.

트랜잭션 삽입, 업데이트, 삭제 문 관리

일반적으로 트랜잭션은 4가지 조건(ACID)을 충족해야 합니다: 원자성(원자성), 일관성(안정성), 격리(격리), 내구성(지속성)

1 트랜잭션의 원자성: 일련의 거래가 성공하거나 철회됩니다.

2. 안정성: 불법 데이터(외래 키 제약 조건 등)가 있는 경우 거래가 철회됩니다.

3. 격리: 트랜잭션이 독립적으로 실행됩니다. 한 거래의 결과가 다른 거래에 영향을 미치는 경우 다른 거래가 철회됩니다. 트랜잭션을 100% 격리하려면 속도가 희생되어야 합니다.

4. 내구성: 트랜잭션이 커밋되면 데이터베이스의 데이터 변경 사항은 영구적입니다. 데이터베이스가 실패하더라도 아무런 영향을 미치지 않습니다.

다음 프로그램을 실행하세요

$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
if($mysqli->connect_error){
    die('数据库连接错误'.$mysqli->connect_error);
}
$sql1 = "update account set balance = balance - 2 where id = 1";
//这里故意写错指令中的balance1属性
$sql2 = "update account set balance1 = balance + 2 where id = 2";        
$result1 = $mysqli->query($sql1);
$result2 = $mysqli->query($sql2);
if(!$result1 || !$result2){
    die('操作错误'.$mysqli->error);
}else{
    die('操作成功');
}
$mysqli->close();

위 코드에서는 오류가 발생하지만 데이터베이스에서 id=1인 잔액이 변경되면 문제가 발생합니다. 오류가 있습니다. 현재로서는 "일관성"을 보장하기 위해 "트랜잭션 제어"가 필요합니다.

우리가 사용해야 하는 방법은 autocommit() commit()입니다.

$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
if($mysqli->connect_error){
    die('数据库连接错误'.$mysqli->connect_error);
}
//关闭数据库自动提交
$mysqli->autocommit(false);
$sql1 = "update account set balance = balance - 2 where id = 1";
//这里故意写错属性balance1
$sql2 = "update account set balance1 = balance + 2 where id = 2";
$result1 = $mysqli->query($sql1);
$result2 = $mysqli->query($sql2);
if(!$result1 || !$result2){
    die('操作错误'.$mysqli->error);
    $mysqli->rollback();    //事务回退
}else{
    //操作全部正确后再提交
    $mysqli->commit();
}
$mysqli->close();

먼저 autocommit(false) 메소드를 사용하고 자동 데이터베이스 제출을 끄고 모든 작업 명령문이 성공하면 commit()이 데이터베이스에 제출됩니다.

작업이 실패하면 롤백() 메소드를 사용하여 롤백합니다. 뒤쪽에.

추천 학습: "

PHP 비디오 튜토리얼

"

위 내용은 PHP에서 거래를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.