현재 위치: > 최신 기사 목록> stmt_init num_rows 또는 영향을받는 _rows로 작업하는 방법 결과를 얻는 방법

stmt_init num_rows 또는 영향을받는 _rows로 작업하는 방법 결과를 얻는 방법

M66 2025-05-29

데이터베이스 작업에 PHP의 MySQLI 확장을 사용하는 경우 MySQLI :: STMT_INIT () 는 중요한 메소드이며 명령문 개체 ( MySQLI_STMT )를 초기화 한 다음 SQL 문을 실행할 준비를합니다. 쿼리 명령문에 결과가 반환되었는지 또는 영향을받는 행 수를 확인하려면 NUM_ROWS ( SELECT 문의 경우) 또는 영향을 받은_ROWS ( 삽입 , 업데이트 또는 삭제 )를 사용하십시오.

이 기사에서는 예제를 사용하여 mysqli :: stmt_init ()를 사용하는 방법을 설명하고 num_rowsinffected_rows를 결합하여 쿼리 결과의 영향을 얻습니다.

1. 준비 : 데이터베이스 연결

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

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

2. stmt_init을 사용하여 명령문을 초기화하고 쿼리를 준비하십시오.

 $stmt = $mysqli->stmt_init();

$sql = "SELECT id, name FROM users WHERE status = ?";
if ($stmt->prepare($sql)) {
    $status = 'active';
    $stmt->bind_param("s", $status);
    $stmt->execute();

    $stmt->store_result(); // 이 단계는 필수입니다,그렇지 않으면 num_rows 항상 돌아올 것입니다 0
    echo "반환 된 행의 수:" . $stmt->num_rows . "<br>";

    if ($stmt->num_rows > 0) {
        $stmt->bind_result($id, $name);
        while ($stmt->fetch()) {
            echo "사용자ID: $id, 이름: $name<br>";
        }
    } else {
        echo "기준을 충족하는 기록이 없습니다。";
    }

    $stmt->close();
} else {
    echo "전처리가 실패했습니다:" . $stmt->error;
}

3. 영향을받는 _rows를 사용하여 업데이트, 삽입 또는 삭제에 의해 영향을받는 행 수를 얻습니다.

 $stmt = $mysqli->stmt_init();

$sql = "UPDATE users SET status = ? WHERE last_login < ?";
if ($stmt->prepare($sql)) {
    $new_status = 'inactive';
    $cutoff_date = '2024-01-01';
    $stmt->bind_param("ss", $new_status, $cutoff_date);
    $stmt->execute();

    echo "영향을받는 행의 수:" . $stmt->affected_rows;

    $stmt->close();
} else {
    echo "전처리가 실패했습니다:" . $stmt->error;
}

4. 주목할만한 것들

  1. num_rows를 사용하는 경우 store_result ()를 호출해야합니다. 그렇지 않으면 항상 반환됩니다.

  2. Infected_rows는 store_result ()를 호출하지 않고 직접 읽을 수 있습니다.

  3. 명령문 개체를 사용한 후 $ stmt-> close () 에게 전화하여 리소스를 해제해야합니다.

  4. 오류 메시지를 디버그하거나보기 위해 $ stmt-> error 또는 $ mysqli-> 오류를 사용하십시오.

V. 결론

MySqli :: stmt_init ()를 합리적으로 사용하고 num_rows영향을 받는_rows를 결합함으로써 데이터베이스 쿼리의 피드백 및 결과 처리를보다 효율적으로 관리 할 수 ​​있습니다. 이것은 안정적인 PHP 응용 프로그램을 개발하는 데 중요합니다.