PHP mysql 트랜잭션 처리 예제
트랜잭션은 4가지 조건(ACID)을 충족해야 합니다: 원자성(Autmic), 일관성(Consistency), 격리(Isolation), 지속성(Durability)
원자성(Autmic): 트랜잭션 실행 측면에서는 "하지 않거나 모두 수행하십시오!"를 달성하는 데 필요합니다. 이는 트랜잭션의 일부가 실행되는 것이 허용되지 않음을 의미합니다. 장애로 인해 트랜잭션을 완료할 수 없더라도 롤백 시 데이터베이스에 미치는 영향을 제거해야 합니다!
일관성: 트랜잭션 작업은 데이터베이스를 하나의 일관된 상태에서 다른 일관된 상태로 변환해야 합니다! 온라인 쇼핑을 예로 들어보겠습니다. 창고에서 상품을 꺼내고 고객의 장바구니에 입력해야만 비즈니스를 만들 수 있습니다.
격리: 여러 트랜잭션이 동시에 실행되는 경우 각 트랜잭션이 독립적으로 실행되는 것과 같아야 합니다!
내구성: 성공적으로 실행된 트랜잭션은 데이터베이스에 지속적인 영향을 미치며, 데이터베이스가 실패하고 오류가 발생하더라도 복구할 수 있어야 합니다.
MYSQL의 트랜잭션 처리 방식은 크게 두 가지가 있습니다.
1. 시작, 롤백 및 커밋을 사용하여 구현
트랜잭션 시작
트랜잭션 롤백
트랜잭션 확인 커밋
롤백과 커밋은 동시에 사용할 수 없습니다. 동시에 사용할 경우 전자만 유효하고 후자는 유효하지 않습니다. 즉, 커밋이나 롤백을 실행합니다
2. set을 직접 사용하여 mysql의 자동 제출 모드를 변경합니다.
MYSQL은 기본적으로 자동으로 제출됩니다. 즉, QUERY를 제출하면 실행됩니다!
자동 제출을 비활성화하려면
자동 제출을 비활성화하려면
자동 커밋을 1로 설정하고 자동 제출을 활성화하면
트랜잭션 처리를 구현할 수 있습니다.
set autocommit=0을 사용하면 커밋이나 롤백을 통해 확인할 때까지 모든 후속 SQL이 트랜잭션으로 처리됩니다. 이 트랜잭션을 종료하면 새 비즈니스도 열립니다. ! 첫 번째 방법에 따르면 현재의 것만 트랜잭션으로 사용됩니다!
MYSQL에서는 INNODB, BDB 유형의 데이터 테이블만 트랜잭션 처리를 지원할 수 있습니다! 다른 유형은 지원되지 않습니다!
***: 일반적으로 MYSQL 데이터베이스의 기본 엔진은 MyISAM입니다. 이 엔진은 트랜잭션을 지원하지 않습니다! MYSQL이 트랜잭션을 지원하도록 하려면 수동으로 수정하면 됩니다.
방법은 다음과 같습니다. 1. c:appservmysqlmy.ini 파일을 수정하고, Skip-InnoDB를 찾아 앞에 #을 추가한 후 파일을 저장합니다.
2. 작업 중에 services.msc를 입력하여 mysql 서비스를 다시 시작합니다.
3. phpmyadmin, mysql->showengines;로 이동하여(또는 'have_%';와 같은 mysql->show 변수 실행) InnoDB에서 YES를 확인합니다. 이는 데이터베이스가 InnoDB를 지원한다는 의미입니다.
즉, 거래 거래가 지원된다는 의미입니다.
4. 테이블 생성 시 스토리지 엔진으로 InnoDB 엔진을 선택할 수 있습니다. 이전에 생성된 테이블인 경우 mysql->alter table table_name type=InnoDB;
$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!"); mysql_select_db('test',$conn); mysql_query("set names 'GBK'"); //使用GBK中文编码; //开始一个事务 mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION"); $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')"; $sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//这条我故意写错 $res = mysql_query($sql); $res1 = mysql_query($sql2); if($res && $res1){ mysql_query("COMMIT"); echo '提交成功。'; }else{ mysql_query("ROLLBACK"); echo '数据回滚。'; } mysql_query("END");
mysql_query("SET AUTOCOMMIT=0"); //设置mysql不自动提交,需自行用commit语句提交 $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')"; $sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//这条我故意写错 $res = mysql_query($sql); $res1 = mysql_query($sql2); if($res && $res1){ mysql_query("COMMIT"); echo '提交成功。'; }else{ mysql_query("ROLLBACK"); echo '数据回滚。'; } mysql_query("END"); //事务处理完时别忘记mysql_query("SET AUTOCOMMIT=1");自动提交
//MyISAM 및 InnoDB 모두 이를 지원합니다.
/*
LOCK TABLES는 현재 스레드에 대해 테이블을 잠글 수 있습니다. 다른 스레드에 의해 테이블이 잠긴 경우 모든 잠금을 획득할 수 있을 때까지 차단이 발생합니다.
UNLOCK TABLES는 현재 스레드가 보유하고 있는 모든 잠금을 해제합니다. 스레드가 다른 LOCK TABLES를 발행하거나 서버에 대한 연결이 닫히면 현재 스레드에 의해 잠긴 모든 테이블이 암시적으로 잠금 해제됩니다.
mysql_query("LOCK TABLES `user` WRITE");//锁住`user`表 $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')"; $res = mysql_query($sql); if($res){ echo '提交成功。!'; }else{ echo '失败!'; } mysql_query("UNLOCK TABLES");//解除锁定

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alipay PHP ...

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.

이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.

PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...

PHP 개발에서 견고한 원칙의 적용에는 다음이 포함됩니다. 1. 단일 책임 원칙 (SRP) : 각 클래스는 하나의 기능 만 담당합니다. 2. Open and Close Principle (OCP) : 변경은 수정보다는 확장을 통해 달성됩니다. 3. Lisch의 대체 원칙 (LSP) : 서브 클래스는 프로그램 정확도에 영향을 미치지 않고 기본 클래스를 대체 할 수 있습니다. 4. 인터페이스 격리 원리 (ISP) : 의존성 및 사용되지 않은 방법을 피하기 위해 세밀한 인터페이스를 사용하십시오. 5. 의존성 반전 원리 (DIP) : 높고 낮은 수준의 모듈은 추상화에 의존하며 종속성 주입을 통해 구현됩니다.

세션 납치는 다음 단계를 통해 달성 할 수 있습니다. 1. 세션 ID를 얻으십시오. 2. 세션 ID 사용, 3. 세션을 활성 상태로 유지하십시오. PHP에서 세션 납치를 방지하는 방법에는 다음이 포함됩니다. 1. 세션 _regenerate_id () 함수를 사용하여 세션 ID를 재생산합니다. 2. 데이터베이스를 통해 세션 데이터를 저장하십시오.
