> 백엔드 개발 > PHP 문제 > PHP가 커밋을 호출할 수 없는 문제를 해결하는 방법

PHP가 커밋을 호출할 수 없는 문제를 해결하는 방법

尊渡假赌尊渡假赌尊渡假赌
풀어 주다: 2023-06-19 10:53:08
원래의
1829명이 탐색했습니다.

PHP가 커밋을 호출할 수 없는 문제에 대한 해결책은 다음과 같습니다. 1. PDO 트랜잭션 "try {$pdo->beginTransaction();}", "$pdo->commit();"이 열려 있는지 확인합니다. 2. 데이터베이스 테이블이나 연결에 문제가 있습니까? 3. 트랜잭션을 지원하는 스토리지 엔진을 사용하십시오. MySQL에서는 InnoDB 및 NDB 스토리지 엔진만 트랜잭션을 지원합니다.

PHP가 커밋을 호출할 수 없는 문제를 해결하는 방법

이 튜토리얼의 운영 체제: Windows 10 시스템, php8.1.3 버전, Dell G3 컴퓨터.

PHP를 사용할 때 `commit()`을 호출하면 효과가 없습니다. 일반적으로 트랜잭션 관리 메커니즘이 올바르게 사용되지 않기 때문입니다.

해결책:

1. PDO 트랜잭션을 열었는지 확인하세요.

```
try {
    $pdo->beginTransaction();
    // your database operations
} catch (PDOException $e) {
    $pdo->rollback();
    throw $e;
}
$pdo->commit();
```
로그인 후 복사

2. 데이터베이스 테이블이나 연결 문제가 있는지 확인하세요

3. 트랜잭션을 지원하는 스토리지 엔진을 사용하고 있는지 확인하세요. MySQL에서는 InnoDB 및 NDB 스토리지 엔진만 트랜잭션을 지원합니다.

영향:

`commit()`에 대한 잘못된 호출로 인해 트랜잭션이 커밋되지 않습니다. 즉, 데이터베이스에 대한 모든 변경 사항이 롤백되어 잘못된 결과가 발생하게 됩니다. 동시에 데이터 일관성을 보장할 수 없으며 트랜잭션 격리 수준에서 제공하는 이점을 잃게 됩니다.

샘플 코드:

다음 샘플 코드는 `commit()`을 사용하여 PDO 트랜잭션을 올바르게 활성화하고 변경 사항을 커밋하는 방법을 보여줍니다.

```
<?php
try {
    $dbh = new PDO(&#39;mysql:host=localhost;dbname=test&#39;, &#39;username&#39;, &#39;password&#39;);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->beginTransaction();
    $sth = $dbh->prepare(&#39;UPDATE users SET email = :email WHERE id = :id&#39;);
    $sth->bindParam(&#39;:id&#39;, $id);
    $sth->bindParam(&#39;:email&#39;, $email);
    $id = 1;
    $email = &#39;test@example.com&#39;;
    $sth->execute();
    $id = 2;
    $email = &#39;test2@example.com&#39;;
    $sth->execute();
    $dbh->commit();
} catch (PDOException $e) {
    $dbh->rollback();
    echo &#39;Error: &#39; . $e->getMessage();
}
```
로그인 후 복사

위 내용은 PHP가 커밋을 호출할 수 없는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿