현재 위치: > 최신 기사 목록> stmt_init을 사용한 후 execute ()을 호출하는 방법

stmt_init을 사용한 후 execute ()을 호출하는 방법

M66 2025-05-29

PHP를 사용하여 MySQL 데이터베이스를 작동 할 때 MySQLI 확장은 풍부한 전처리 명세서 (준비 문) 지원을 제공하여 SQL 주입 공격을 효과적으로 방지하고 데이터베이스 작업의 보안 및 효율성을 향상시킬 수 있습니다. 이 기사는 mysqli :: stmt_init 메소드를 사용하여 명령문 객체를 초기화하고 객체를 통해 SQL 문을 실행하는 방법에 중점을 둡니다.

1. mysqli :: stmt_init 란 무엇입니까?

mysqli :: stmt_init ()는 빈 명령문 개체 ( mysqli_stmt )를 초기화하는 데 사용되는 mysqli 클래스의 메소드입니다. 이 객체는 repay () 메소드를 호출하여 SQL 쿼리 문에 바인딩되고 Bind_param () , execute () 및 기타 작업 메소드를 호출합니다.

기본 구문은 다음과 같습니다.

 $stmt = $mysqli->stmt_init();

여기서 $ mysqli 는 데이터베이스에 연결된 MySQLI 객체입니다.

2. 완료 예 : STMT_INIT를 사용하여 SQL 쿼리를 실행합니다.

다음은 STMT_INIT 초기화 명령문을 사용하고 SQL 쿼리를 실행하는 완전한 PHP 예입니다.

 <?php
// 데이터베이스 연결
$mysqli = new mysqli("localhost", "username", "password", "database");

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

// 명령문 객체를 초기화하십시오
$stmt = $mysqli->stmt_init();

// 전처리 SQL 성명
if ($stmt->prepare("SELECT name, email FROM users WHERE id = ?")) {
    // 바인딩 매개 변수
    $id = 1;
    $stmt->bind_param("i", $id);

    // 执行성명
    $stmt->execute();

    // 바인딩 결과 변수
    $stmt->bind_result($name, $email);

    // 쿼리 결과를 얻으십시오
    while ($stmt->fetch()) {
        echo "사용자 이름: $name, 우편: $email<br>";
    }

    // 关闭성명
    $stmt->close();
} else {
    echo "SQL 전처리失败: " . $stmt->error;
}

// 연결을 닫으십시오
$mysqli->close();
?>

3. 주목할만한 것들

  • stmt_init ()를 호출 한 후에는 repay () 메소드를 사용하여 실제로 SQL 문을 바인딩해야합니다.

  • 예를 들어 Bind_param () 의 유형 매개 변수는 정수 를 나타내고 "S"는 문자열을 나타내므로 올바르게 설정해야합니다.

  • 명령문 개체를 사용한 후 $ stmt-> close () 에게 전화하여 리소스를 확보하십시오.

4. 왜 직접 $ mysqli-> repay () 대신 stmt_init을 사용합니까?

명령문 준비에 $ mysqli-> repary ()를 직접 사용할 수 있지만 stmt_init ()는 문을 재사용 할 수 있는지 확인 해야하는지 또는 저수준 인터페이스를 사용하는 것과 같은 더 유용한 것과 같이보다 자세한 컨트롤을 제공합니다.

5. 실제 응용 시나리오의 예