이번에는 PHP에서 PDO 트랜잭션을 사용하는 단계에 대해 자세히 설명하겠습니다. PHP에서 PDO 트랜잭션을 사용할 때 주의사항은 무엇인가요?
요약:
여러 SQL 작업(추가, 삭제, 수정)을 모두 성공하거나 모두 실패하는 하나의 작업 단위로 처리합니다.
단일 데이터에는 트랜잭션 처리가 필요하지 않습니다.
운영되는 테이블은 innoDB형 테이블이어야 합니다(트랜잭션 지원).
MySQL에서 자주 사용하는 테이블 유형: MyISAM(비트랜잭션)은 추가, 삭제, 수정이 빠릅니다. , InnodB(트랜잭션)는 보안성이 높습니다
테이블 유형을 innoDB 유형으로 변경
mysql> alter table stu engine=innodb;
사용:
PDO 전처리를 기반으로 다음 형식을 추가합니다.
try{ $m->beginTransaction();//开启事务处理 //PDO预处理以及执行语句... $m->commit();//提交事务 }catch(PDOException $e){ $m->rollBack();//事务回滚 //相关错误处理 }
예:
$m = new PDO($dsn,$user,$pwd); $m->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try{ $m->beginTransaction();//开启事务处理 $stmt=$m->prepare("insert into stu(name,sex,age,classid)values(?,?,?,?)"); $data=array( array("user1",1,22,"lamp76"), array("user2",1,20,"lamp76"), array("user3",0,22,"lamp76") ); foreach($data as $v){ $stmt->execute($v); echo $m->lastInsertId(); } $m->commit(); echo "提交成功!"; }catch(PDOException $e){ $m->rollBack();//回滚 die("提交失败!"); }
보충: PDO
개요:
트랜잭션은 일련의 쿼리 및/또는 업데이트 문으로 구성됩니다. 트랜잭션을 시작하려면 시작, 트랜잭션 시작
을 사용하고, 트랜잭션을 롤백하려면 롤백하고, 트랜잭션을 커밋하려면 커밋을 사용하세요. 트랜잭션을 시작한 후에는 여러 개의 SQL 쿼리나 업데이트 문이 있을 수 있으며, 각 SQL이 실행을 위해 제출된 후에는 모두 실행되었는지 확인하기 위해 다음 단계에서 롤백할지 여부를 결정하는 문도 있어야 합니다. 올바르게 실행되면 최종적으로 제출됩니다.
트랜잭션이 롤백되면 데이터베이스는 트랜잭션이 시작되기 전의 상태로 유지됩니다. 편집한 파일을 저장하지 않고 종료하는 것처럼 자연스럽게 파일의 원래 모습이 유지됩니다.
따라서 트랜잭션은 원자성 작업으로 간주될 수 있으며 트랜잭션의 SQL은 완전히 실행되거나 전혀 실행되지 않습니다.
PDO의 MYSQL 트랜잭션 처리 단계:
①. 자동 제출을 끄고 ② 트랜잭션 처리를 켭니다. 예외가 있으면 자동으로예외를 발생시키고
롤백합니다. 참고:mysql 이 InnoDB 드라이버만 트랜잭션 처리를 지원하며 기본 MyIsAM 드라이버는 이를 지원하지 않습니다.
예:
<?php try{ //最后是关闭自动提交 $pdo=new pdo("mysql:host=localhost;dbname=mydb","root","root", array(PDO::ATTR_AUTOCOMMIT=>0)); //这个是通过设置属性方法进行关闭自动提交和上面的功能一样 //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0); //开启异常处理 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo "数据库连接失败:".$e->getMessage(); exit; } /* * 事务处理 * * 张三从李四那里买了一台 2000 元的电脑 * 从张三帐号中扣出 2000元 * 向李四账号中加入 2000元 * 从商品表中减少一台电脑 * MyIsAM InnoDB */ try{ $pdo->beginTransaction();//开启事务处理 $price=500; $sql="update zhanghao set price=price-{$price} where id=1"; $affected_rows=$pdo->exec($sql); if(!$affected_rows) throw new PDOException("张三转出失败");//那个错误抛出异常 $sql="update zhanghao set price=price+{$price} where id=3"; $affected_rows=$pdo->exec($sql); if(!$affected_rows) throw new PDOException("向李四转入失败"); echo "交易成功!"; $pdo->commit();//交易成功就提交 }catch(PDOException $e){ echo $e->getMessage(); $pdo->rollback(); } //自动提交,如果最后不自动提交,转账是不成功的 $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1); //设置错误报告模式 ERRMODE_SILENT ERRMODE_WARNING
방법은 본 글의 사례를 읽어보신 후, 더 많은 PHP 중국어 홈페이지의 다른 관련 글도 주목해주세요! 추천 도서:
php는 컬을 사용하여 IP를 복사하고 자세히 참조합니다.위 내용은 PHP에서 PDO 트랜잭션을 사용하는 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpsessionscanstorestrings, 숫자, 배열 및 객체 1.Strings : TextDatalikeUsernames.2.numbers : integorfloatsforcounters.3.arrays : listslikeshoppingcarts.4.objects : complexStructuresThatareserialized.

세션 재생은 세션 고정 공격의 경우 사용자가 민감한 작업을 수행 할 때 새 세션 ID를 생성하고 이전 ID를 무효화하는 것을 말합니다. 구현 단계에는 다음이 포함됩니다. 1. 민감한 작업 감지, 2. 새 세션 ID 생성, 3. 오래된 세션 ID 파괴, 4. 사용자 측 세션 정보 업데이트.

PHP 세션은 응용 프로그램 성능에 큰 영향을 미칩니다. 최적화 방법은 다음과 같습니다. 1. 데이터베이스를 사용하여 세션 데이터를 저장하여 응답 속도를 향상시킵니다. 2. 세션 데이터 사용을 줄이고 필요한 정보 만 저장하십시오. 3. 비 차단 세션 프로세서를 사용하여 동시성 기능을 향상시킵니다. 4. 사용자 경험과 서버 부담의 균형을 맞추기 위해 세션 만료 시간을 조정하십시오. 5. 영구 세션을 사용하여 데이터 읽기 및 쓰기 시간의 수를 줄입니다.

phpsessionsareser-side, whilecookiesareclient-side.1) sessions stessoredataontheserver, andhandlargerdata.2) cookiesstoredataonthecure, andlimitedinsize.usesessionsforsensitivestataondcookiesfornon-sensistive, client-sensation.

phpidifiesauser의 sssessionusessessioncookiesandssessionids.1) whensession_start () iscalled, phpgeneratesauniquessessionStoredInacookienamedPhpsSessIdonSeuser 'sbrowser.2) thisidallowsphptoretrievessessionDataTromServer.

PHP 세션의 보안은 다음 측정을 통해 달성 할 수 있습니다. 1. Session_REGENEREAT_ID ()를 사용하여 사용자가 로그인하거나 중요한 작업 일 때 세션 ID를 재생합니다. 2. HTTPS 프로토콜을 통해 전송 세션 ID를 암호화합니다. 3. 세션 _save_path ()를 사용하여 세션 데이터를 저장하고 권한을 올바르게 설정할 보안 디렉토리를 지정하십시오.

phpsessionfilesarestoredInTheRectorySpecifiedBysession.save_path, 일반적으로/tmponunix-likesystemsorc : \ windows \ temponwindows.tocustomizethis : 1) austession_save_path () toSetacustomDirectory, verlyTeCustory-swritation;


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
