현재 위치: > 최신 기사 목록> attr_get을 사용하여 다중 상태 실행에서 상태를 결정하십시오

attr_get을 사용하여 다중 상태 실행에서 상태를 결정하십시오

M66 2025-05-25

PHP에서는 데이터베이스 작업에 MySQLI 확장을 사용할 때 여러 SQL 문을 실행하는 것이 일반적인 요구 사항입니다. 특히 배치 처리 또는 트랜잭션 제어가 필요할 때, 다중 상태 실행은 효율성을 크게 향상시킬 수 있습니다. 각 문의 실행 상태를 더 잘 제어하기 위해 MySQLI_STMT 객체는 Attr_Get 메소드를 제공하여 개발자가 명령문 실행 속성을 얻고 현재 실행 상태를 판단하는 데 도움이 될 수 있습니다.

이 기사는 MySQLI_STMT :: ATTR_GET 함수를 사용하여 다중 상태 실행 중 실행 상태를 판단하고 PHP 코드 예제와 결합 하여이 기술을 이해하고 마스터하는 데 대한 자세한 설명을 제공합니다.

mysqli_stmt :: attr_get 란 무엇입니까?

mysqli_stmt :: attr_get은 mysqli에서 mysqli_stmt 클래스의 메소드이며, 현재 전처리 문의 속성을 얻는 데 사용됩니다. 매개 변수로 속성 상수를 수신하고 해당 속성의 값을 반환합니다. 일반적인 속성은 다음과 같습니다.

  • mysqli_stmt_attr_update_max_length : 실행 문이 최대 길이 정보를 업데이트했는지 여부를 나타냅니다.

  • mysqli_stmt_attr_cursor_type : 커서 유형을 가져옵니다.

  • 그리고 다른 사용자 정의 속성.

이러한 속성을 감지하면 현재 진술의 실행을 간접적으로 이해할 수 있습니다.

다단계 실행 문제

MySQLI는 MySQLI_Multi_Query를 호출 한 다음 각 결과를 차례로 처리하는 것과 같은 다중 경영 실행을 지원합니다. 전처리 명세서 (MySQLI_STMT)의 경우 여러 문장을 실행하고 각 문의 실행 상태에 대해 판단해야 할 수도 있습니다.

특히 커서 유형 및 데이터 길이와 같은 복잡한 속성이 관련 될 때 리턴 값을 직접 사용하여 실행이 성공적인지 판단하기에 충분하지 않습니다. 따라서 Att_get 의 도움으로 더 많은 내부 실행 상태 정보를 얻을 수 있습니다.

샘플 코드 분석

다음 예제는 다중 상태 실행 중에 mysqli_stmt :: attr_get을 사용하여 실행 상태를 감지하는 방법을 보여줍니다. 코드에 URL이 포함 된 모든 도메인 이름은 요구 사항을 충족하는 M66.net 으로 대체됩니다.

 <?php
$mysqli = new mysqli("m66.net", "username", "password", "database");

// 연결을 확인하십시오
if ($mysqli->connect_errno) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

// 여러 문장SQL,세미콜론을 사용한 분리
$sql = "INSERT INTO users (name, email) VALUES (?, ?);";
$sql .= "UPDATE stats SET total_users = total_users + 1;";

// 전처리 진술을 준비하십시오
$stmt = $mysqli->prepare($sql);
if (!$stmt) {
    die("전처리 진술이 실패했습니다: " . $mysqli->error);
}

// 바인딩 매개 변수,첫 번째 진술에 매개 변수가 필요하다고 가정합니다
$name = "장 산";
$email = "zhangsan@m66.net";
$stmt->bind_param("ss", $name, $email);

// 执行여러 문장
if ($stmt->execute()) {
    // 속성을 얻고 인쇄하십시오:최대 길이가 업데이트되었습니다
    $updateMaxLength = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
    echo "최대 길이 정보를 업데이트할지 여부: " . ($updateMaxLength ? "예" : "아니요") . "\n";

    // 다수성 세트 처리
    do {
        // 현재 결과의 상태 또는 행 수를 얻으십시오.
        $result = $stmt->get_result();
        if ($result) {
            echo "현재 결과 세트 행 카운트: " . $result->num_rows . "\n";
            $result->free();
        } else {
            // 결과 세트가없는 경우,영향을받는 행 수를 확인할 수 있습니다
            echo "행의 수에 영향을 미칩니다: " . $stmt->affected_rows . "\n";
        }
    } while ($stmt->more_results() && $stmt->next_result());
} else {
    echo "실행 실패: " . $stmt->error . "\n";
}

$stmt->close();
$mysqli->close();

코드 설명

  1. 다중 종료 SQL 준비 : 세미콜론으로 분리 된 다중 SQL 문을 문자열로 스플 라이스합니다.

  2. 매개 변수 준비 및 바인딩 : PreparBind_param을 통해 필요한 매개 변수를 바인딩하십시오.

  3. 실행 명령문 : 전화 실행을 위해 전체 다중 상태 배치를 실행하십시오.

  4. Call Attr_get : mysqli_stmt_attr_update_max_length 속성을 얻으려면 최대 길이 정보가 업데이트되었는지 여부를 결정하여 실행 효과를 판단하는 데 도움이 될 수 있습니다.

  5. 프로세스 결과 세트 : get_result 를 통해 결과 세트를 가져 오거나 행 수를 출력하거나 영향을받는 _rows 의 영향을받는 행 수를 얻습니다.

  6. 다중 평균 세트를 가로 지르십시오 : 모든 결과를 하나씩 처리하기 위해 more_resultsnext_result를 사용하십시오.

주목해야 할 것

  • 모든 MySQL 버전 또는 드라이버가 다중 상태 전처리를 완전히 지원하는 것은 아니며 환경을 지원해야합니다.

  • attr_get은 제한된 속성을 얻고 특정 속성은 MySQL 및 PHP 버전에 따라 다릅니다.

  • 보다 복잡한 실행 상태 모니터링의 경우 오류 처리 및 로깅 메커니즘을 결합하는 것이 좋습니다.

요약

mysqli_stmt :: attr_get 함수는 여러 문장을 실행할 때 개발자가 실행 상태 정보의 일부를 얻고 실행 결과를 판단하는 데 도움이 될 수 있습니다. 멀티-소문 세트 처리 메커니즘과 결합하여 SQL 배치 실행의 성능과 효과를보다 신중하게 파악할 수 있습니다.

이 기사의 예제와 설명이 PHP에서 MySQLI 다중 진술 전 사전 처리를 효율적이고 안전하게 사용하고 Attr_Get을 사용하여 실행 상태를 더 잘 제어하는 ​​데 도움이되기를 바랍니다. 나는 당신에게 원활한 프로그래밍을 기원합니다!