현재 위치: > 최신 기사 목록> 거래 처리 중에 실패 지점을 결정하기 위해 $ errno를 사용하는 방법

거래 처리 중에 실패 지점을 결정하기 위해 $ errno를 사용하는 방법

M66 2025-05-29

PHP 프로그래밍에서 MySQLI를 사용하여 데이터베이스 트랜잭션을 수행 할 때 일반적으로 트랜잭션의 모든 작업이 원활하게 완료되도록해야합니다. 이 단계 중 하나라도 실패하면 어떤 링크가 잘못되었는지 정확하게 결정할 수 있어야합니다. mysqli :: $ errno 속성은 거래 실패의 원인을 진단하는 데 도움이 될 수 있습니다. 이 기사는 MySQLI :: $ errno를 통해 데이터베이스 트랜잭션의 어떤 단계가 실패한지를 결정하는 방법을 자세히 설명합니다.

mysqli :: $ errno 란 무엇입니까?

MySQLI에서 MySQLI :: $ errno는 최신 작업의 오류 코드를 나타내는 속성입니다. 이 속성을 통해 작업이 성공적인지 실패했는지 여부를 결정하기 위해 잘못된 숫자 코드를 얻을 수 있습니다. 작업이 실패하면 Errno는 해당 오류 코드를 반환하고 성공하면 0을 반환합니다.

MySqli :: $ errno를 사용하여 거래에서 실패하는 단계를 결정하는 방법은 무엇입니까?

  1. 거래를 시작하십시오

    트랜잭션을 시작하기 전에 트랜잭션을 시작하려면 mysqli :: begin_transaction ()을 호출해야합니다.

     $mysqli = new mysqli("localhost", "user", "password", "database");
    
    if ($mysqli->connect_error) {
        die("연결이 실패했습니다: " . $mysqli->connect_error);
    }
    
    // 거래를 시작하십시오
    $mysqli->begin_transaction();
    
  2. 트랜잭션에서 SQL 작업을 수행하십시오

    거래에서 여러 SQL 쿼리를 실행할 수 있습니다. 각 쿼리의 오류 코드를 확인하여 단계가 실패했는지 확인합니다.

     // 첫 번째를 실행하십시오 SQL 질문
    $result1 = $mysqli->query("UPDATE users SET balance = balance - 100 WHERE id = 1");
    
    // 检查第一个질문是否成功
    if ($mysqli->errno) {
        echo "실수:질문 1 실패하다,실수代码:" . $mysqli->errno;
        $mysqli->rollback(); // 트랜잭션을 롤백하십시오
        exit();
    }
    
    // 두 번째를 실행하십시오 SQL 질문
    $result2 = $mysqli->query("UPDATE users SET balance = balance + 100 WHERE id = 2");
    
    // 检查第二个질문是否成功
    if ($mysqli->errno) {
        echo "실수:질문 2 실패하다,실수代码:" . $mysqli->errno;
        $mysqli->rollback(); // 트랜잭션을 롤백하십시오
        exit();
    }
    
    // 如果所有질문都成功,거래를 제출하십시오
    $mysqli->commit();
    

    이 예에서는 두 가지 업데이트를 수행합니다. 첫 번째는 사용자 1의 균형을 100으로 줄이고 두 번째는 사용자 2의 균형을 100으로 증가시킵니다. 쿼리가 실패하면 mysqli :: $ errno를 확인하여 트랜잭션을 롤백하여 오류 코드를 출력합니다.

  3. mysqli :: $ errno를 통한 오류를 확인하십시오

    MySQLI :: $ errno 의 값은 각 SQL 작업이 수행 된 후에 업데이트됩니다. 작업이 실패하면 MySQLI :: $ errno는 해당 오류 코드를 반환 하고이 오류 코드를 사용하여 문제를 결정할 수 있습니다. 예를 들어 업데이트 작업을 수행하면 다음 오류 코드가 나타날 수 있습니다.

    • 1062 : 중복 키 오류를 나타냅니다.

    • 1451 : 외래 키 제약 오류를 나타냅니다.

    위의 코드에서는 errno 에 값이 있는지 ($ mysqli-> errno)를 확인합니다. 그렇다면 쿼리에 실패했으며 MySQLI :: $ errno 가 제공 한 오류 코드를 기반으로 문제를 더 분석 할 수 있습니다.

  4. 거래 처리의 오류

    트랜잭션의 작업이 실패하면 전체 트랜잭션을 롤백해야합니다. mysqli :: rollback ()을 사용하여 실행 된 모든 SQL 작업을 취소하여 데이터베이스가 일관되게 유지하십시오. 위의 코드 예제에서 각 쿼리가 실패하면 롤백 ()을 호출 한 다음 exit () 에 의해 스크립트 실행을 중지합니다.

    또한 트랜잭션이 끝나면 오류가 없으면 MySQLI :: Commit ()를 사용하여 트랜잭션을 커밋하여 모든 변경 사항이 데이터베이스에 저장되도록합니다.

요약

mysqli :: $ errno를 통해 데이터베이스 트랜잭션에서 실패한 작업이 정확하게 결정할 수 있습니다. 이 접근법은 디버깅 및 오류 처리에 매우 효과적이며 복잡한 거래에서 문제를 찾고 적절한 조치를 취할 수 있습니다. 트랜잭션 처리 중에 오류가 발생하면 데이터 불일치를 피하기 위해 트랜잭션을 즉시 롤백해야합니다.

이 기사가 PHP에서 mysqli :: $ errno를 사용하여 거래의 오류 단계를 결정하는 방법을 더 잘 이해하는 데 도움이되기를 바랍니다. 실제 응용 프로그램에서 문제가 발생하면 MySQL 오류 코드 테이블을 찾아서 문제를 더 분석하고 해결할 수 있습니다.