현재 위치: > 최신 기사 목록> STMT_INIT를 사용하여 업데이트 (업데이트) 문을 실행하는 권장 방법

STMT_INIT를 사용하여 업데이트 (업데이트) 문을 실행하는 권장 방법

M66 2025-05-29

준비된 진술은 PHP를 사용하여 MySQL 데이터베이스를 운영 할 때 보안 및 성능을 향상시키기위한 주요 기술 중 하나입니다. mysqli :: stmt_init는 전처리 명령문 개체를 초기화하는 데 사용되는 MySQLI 클래스의 함수입니다. SQL 업데이트 작업 (예 : 업데이트 문)을 안전하게 수행하기 위해 repay ()bind_param () 메소드와 협력하는 데 종종 사용됩니다.

이 기사는 mysqli :: stmt_init을 사용하여 업데이트 문을 실행하는 방법에 대한 자세한 설명을 제공하고 권장 모범 사례 및 실제 팁을 제공합니다.

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

mysqli :: stmt_init는 mysqli_stmt 객체를 초기화하는 데 사용되는 함수입니다. 구문은 다음과 같습니다.

 mysqli_stmt mysqli::stmt_init ( void )

Unbound 문과 현재 연결과 관련된 MySQLI_STMT 객체를 반환합니다. 그런 다음이 객체를 사용하여 ready () , bind_param () , execute () 및 기타 작업을 수행하는 데 사용할 수 있습니다.

2. 기본 사용 예 : 업데이트 문을 실행합니다

다음 예제는 mysqli :: stmt_init 및 preprocessing 문을 통해 사용자 정보를 안전하게 업데이트하는 방법을 보여줍니다.

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

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

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

// 준비하다 SQL 성명
if ($stmt->prepare("UPDATE users SET email = ? WHERE id = ?")) {
    // 바인딩 매개 변수:s 문자열을 나타냅니다,i 정수를 나타냅니다
    $stmt->bind_param("si", $email, $id);

    // 매개 변수 값을 설정합니다
    $email = "newemail@m66.net";
    $id = 42;

    // 执行성명
    if ($stmt->execute()) {
        echo "사용자 정보가 성공적으로 업데이트되었습니다!";
    } else {
        echo "업데이트가 실패했습니다: " . $stmt->error;
    }

    // 关闭성명
    $stmt->close();
} else {
    echo "SQL 준비하다失败: " . $stmt->error;
}

$mysqli->close();
?>

3. 모범 사례

1. 항상 전처리 진술을 사용하십시오

사용자가 업데이트 문에서 입력을 검증하더라도 SQL을 구성하는 문자열을 피하십시오. 전처리 명세서는 SQL 주입 공격을 효과적으로 방지 할 수 있습니다.

2. 작업의 모든 단계를 점검하십시오

stmt_init () , repary () , bind_param ()execute () 와 같은 작업의 반환 값을 확인하십시오. 이렇게하면 문제를 조기에 감지하고 오류를 찾을 수 있습니다.

3. try-catch 사용 ( mysqli_report ()를 사용하는 경우).

예외 모드를 활성화하여 오류 처리를 단순화 할 수 있습니다.

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

활성화되면 오류가 예외가 발생하여 Try-Catch 구조를 사용하여 쉽게 잡을 수 있습니다.

4. 자원 정리

명령문 객체를 사용할 때마다 $ stmt-> close ()를 호출하여 리소스가 해제되도록해야합니다.

4. 고급 기술

다중 매개 변수를 동적으로 바인딩합니다

매개 변수 수가 고정되지 않은 경우 Call_user_func_array ()를 사용하여 동적 매개 변수 바인딩을 구현할 수 있습니다. 이것은 배치 업데이트 또는 유연한 업데이트 문을 구축 할 때 매우 유용합니다.

트랜잭션 처리를 사용하여 작업을 업데이트합니다

하나의 작업에 여러 업데이트가 관련되면 트랜잭션 사용을 고려하십시오.

 $mysqli->begin_transaction();
try {
    // 다중 실행 update 작동하다
    $stmt1 = $mysqli->prepare("UPDATE ...");
    $stmt1->bind_param(...);
    $stmt1->execute();

    $stmt2 = $mysqli->prepare("UPDATE ...");
    $stmt2->bind_param(...);
    $stmt2->execute();

    $mysqli->commit();
} catch (Exception $e) {
    $mysqli->rollback();
    echo "거래에 실패했습니다: " . $e->getMessage();
}

5. 요약

mysqli :: stmt_init을 사용하여 업데이트 문을 실행하는 것은 PHP에서 데이터베이스를 작동하는 것이 좋습니다. 전처리 명세서를 사용하여 프로그램의 보안 및 유지 보수 가능성을 향상시킬 수 있습니다. 트랜잭션 및 오류 처리 메커니즘을 결합하면 전반적인 견고성을 더욱 향상시킬 수 있습니다.