현재 위치: > 최신 기사 목록> pdostatement를 통한 배치 작업의 실행 결과를 판단하는 방법 :: RowCount

pdostatement를 통한 배치 작업의 실행 결과를 판단하는 방법 :: RowCount

gitbox 2025-05-28

PHP에서 PDO (PHP Data Objects)는 데이터베이스와 상호 작용하기위한 강력한 인터페이스를 제공하여 다양한 데이터베이스 작업을 수행하는 데 도움이됩니다. 배치 작업은 단일 데이터베이스 트랜잭션에서 다중 인서트, 업데이트 또는 삭제 작업의 실행을 나타냅니다. pdostatement :: RowCount 는 영향을받는 행의 수를 얻는 데 사용되는 방법으로, 일반적으로 SQL 쿼리가 성공적으로 실행되는지 여부를 결정하는 데 사용됩니다.

이 기사에서는 Pdostatement :: RowCount 함수를 사용하여 배치 작업이 성공적으로 실행되는지 여부를 결정하고 관련 코드 예제를 제공하는 방법을 소개합니다.

1. pdostatement의 역할 :: RowCount

pdostatement :: rowCount 메소드는 마지막 SQL 문의 영향을받는 행의 수를 반환합니다. 이것은 판단하는 데 사용될 수 있습니다.

  • 삽입 작업 중에 몇 줄이 성공적으로 삽입되었는지

  • 업데이트 작업 중에 수정 된 라인 수

  • 삭제 작업에서 삭제되는 행 수

그러나 모든 데이터베이스 드라이버가 영향을받는 행의 수를 정확하게 반환 할 수있는 것은 아닙니다. 특히 일부 선택 쿼리. 배치 작업을 수행 할 때 RowCount 의 반환 값은 작업이 성공했는지 여부를 결정하는 데 도움이 될 수 있습니다.

2. RowCount를 사용하여 배치 작업이 성공했는지 확인하십시오.

배치 작업에서는 일반적으로 트랜잭션을 사용하여 일련의 운영의 원자력을 보장합니다. 여러 SQL 문을 실행할 때 RowCount를 사용하여 각 문을 성공적으로 실행하는지 여부를 결정할 수 있습니다.

샘플 코드 :

다음은 PDO를 사용하여 배치 삽입 작업을 수행하고 RowCount를 통해 성공했는지 여부를 결정하는 예입니다.

 <?php
// 데이터베이스 연결 설정
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = 'password';

try {
    // 만들다 PDO 예
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 거래를 시작하십시오
    $pdo->beginTransaction();

    // 배치로 데이터를 삽입하십시오
    $sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
    $stmt = $pdo->prepare($sql);

    // 배치 데이터를 삽입한다고 가정합니다
    $users = [
        ['name' => 'John Doe', 'email' => '[email protected]'],
        ['name' => 'Jane Doe', 'email' => '[email protected]'],
        ['name' => 'Alice', 'email' => '[email protected]']
    ];

    $success = true;
    foreach ($users as $user) {
        // 매개 변수를 바인딩하고 삽입 작업을 수행합니다
        $stmt->bindParam(':name', $user['name']);
        $stmt->bindParam(':email', $user['email']);
        
        if (!$stmt->execute()) {
            // 실행이 실패한 경우,실패로 표시하십시오
            $success = false;
            break;
        }

        // 데이터가 삽입되어 있는지 확인하십시오
        if ($stmt->rowCount() == 0) {
            $success = false;
            break;
        }
    }

    // 거래를 제출하십시오,삽입이 성공한 경우
    if ($success) {
        $pdo->commit();
        echo "성공적인 배치 삽입!";
    } else {
        $pdo->rollBack();
        echo "벌크 인서트가 실패했습니다!";
    }
} catch (PDOException $e) {
    // 트랜잭션 롤백 및 오류 메시지를 표시합니다
    $pdo->rollBack();
    echo "데이터베이스 오류:" . $e->getMessage();
}
?>

코드 설명 :

  1. 데이터베이스 연결 : 먼저 PDO를 사용하여 데이터베이스에 연결합니다.

  2. 트랜잭션 관리 : $ pdo-> beginTransaction ()을 통해 트랜잭션을 시작하여 배치 삽입 작업의 원자력을 보장합니다.

  3. 삽입 실행 : Foreach 루프에서 사용자 데이터를 하나씩 삽입합니다. 각각의 삽입 전에 BindParam을 사용하여 매개 변수를 바인딩하고 SQL 문을 실행하십시오.

  4. 행 수 확인 : RowCount () 메소드를 사용하여 각 삽입 작업이 데이터베이스의 행에 영향을 미치는지 확인하십시오. rowCount ()가 0을 반환하면 데이터가 삽입되지 않고 작동이 실패 함을 의미합니다.

  5. 트랜잭션 커밋 또는 롤백 : 모든 삽입 작업이 성공한 경우 거래를 커밋하려면 $ pdo-> commit ()를 호출하여 $ pdo-> rollback ()을 호출하여 트랜잭션을 롤백하십시오.

3. RowCount를 사용하여 다른 배치 작업을 결정하십시오

삽입 작업 외에도 RowCount는 배치 업데이트 또는 삭제 작업에도 사용될 수 있습니다. 업데이트 또는 삭제 작업 중에 RowCount 의 반환 값에 따라 지정된 행이 성공적으로 업데이트되었거나 삭제되었는지 판단 할 수 있습니다.

예 : 배치 업데이트 작업

 <?php
// 데이터베이스 연결 설정
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = 'password';

try {
    // 만들다 PDO 예
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 거래를 시작하십시오
    $pdo->beginTransaction();

    // 배치 업데이트 작업
    $sql = "UPDATE users SET email = :email WHERE name = :name";
    $stmt = $pdo->prepare($sql);

    // 데이터를 업데이트한다고 가정합니다
    $users = [
        ['name' => 'John Doe', 'email' => '[email protected]'],
        ['name' => 'Jane Doe', 'email' => '[email protected]']
    ];

    $success = true;
    foreach ($users as $user) {
        // 매개 변수를 바인딩하고 업데이트 작업을 수행하십시오
        $stmt->bindParam(':name', $user['name']);
        $stmt->bindParam(':email', $user['email']);
        
        if (!$stmt->execute()) {
            // 실행이 실패한 경우,실패로 표시하십시오
            $success = false;
            break;
        }

        // 데이터가 업데이트되었는지 확인하십시오
        if ($stmt->rowCount() == 0) {
            $success = false;
            break;
        }
    }

    // 거래를 제출하십시오,업데이트가 성공하면
    if ($success) {
        $pdo->commit();
        echo "성공적인 배치 업데이트!";
    } else {
        $pdo->rollBack();
        echo "대량 업데이트가 실패했습니다!";
    }
} catch (PDOException $e) {
    // 트랜잭션 롤백 및 오류 메시지를 표시합니다
    $pdo->rollBack();
    echo "데이터베이스 오류:" . $e->getMessage();
}
?>

4. 요약

pdostatement :: rowCount 함수를 사용하면 배치 작업이 성공적으로 실행되는지 쉽게 결정할 수 있습니다. 배치 삽입, 업데이트 또는 삭제 작업이든, 작업이 RowCount 에서 반환 된 행 수를 기반으로 작업이 성공적으로 실행되는지 판단 할 수 있습니다. 이 접근법은 특히 트랜잭션을 사용할 때 운영이 성공 해야하는 상황에 매우 적합하여 데이터 일관성과 무결성을 보장합니다.