현재 위치: > 최신 기사 목록> MySQLI_STMT :: $ 오류 사용 전처리 문서에서 문제를 디버깅하기 위해

MySQLI_STMT :: $ 오류 사용 전처리 문서에서 문제를 디버깅하기 위해

gitbox 2025-05-28

PHP를 사용하여 MySQL 데이터베이스를 작동 할 때 준비된 명령문은 SQL 주입을 효과적으로 방지하고 보안 및 코드 유지 관리를 향상시킬 수 있습니다. 그러나 구문 오류, 매개 변수 바인딩 오류 또는 실행 실패와 같은 전처리 명세서를 작성하고 실행하는 동안 다양한 오류가 발생할 수 있습니다.

이러한 문제를 신속하게 찾으려면 MySQLI_STMT :: $ 오류는 매우 유용한 디버깅 도구입니다. MySQLI_STMT 클래스의 속성입니다. 실행 명령문이 실패하면 특정 오류 정보를 반환 할 수있어 개발자가 문제를 신속하게 찾을 수 있도록 도와줍니다.

기본 사용

다음은 mysqli_stmt :: $ error를 사용하는 기본 예입니다.

 <?php
$mysqli = new mysqli("localhost", "db_user", "db_pass", "test_db");

if ($mysqli->connect_errno) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

$sql = "INSERT INTO users (username, email) VALUES (?, ?)";
$stmt = $mysqli->prepare($sql);

if (!$stmt) {
    die("전처리가 실패했습니다: " . $mysqli->error);
}

// 매개 변수 바인딩을 잘못 작성했습니다:두 매개 변수가 결합되어야한다고 가정합니다,여기에 하나만 묶여 있습니다
$stmt->bind_param("s", $username);

$username = "alice";
$email = "[email protected]";

if (!$stmt->execute()) {
    // 사용 mysqli_stmt::$error 출력 상세 오류
    echo "실행 실패: " . $stmt->error;
}

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

출력은 다음과 유사 할 수 있습니다.

 실행 실패: Number of variables doesn't match number of parameters in prepared statement

이 오류 프롬프트는 매개 변수 수의 불일치 문제를 명확하게 지적합니다.

mysqli_stmt :: $ error를 사용할 때

다음 상황 에서이 속성을 사용하여 디버깅 할 수 있습니다.

  1. 진술서 생성을 전처리 할 때 <br> $ mysqli-> 오류를 사용하여 오류 정보를 얻으십시오.

  2. 파라미터 바인딩이 실패하거나 숫자 불일치
    bind_param () 자체 자체는 오류를보고하지 않지만 매개 변수 수가 잘못된 경우 $ stmt-> 오류가 실행될 때 프롬프트됩니다.

  3. 실행이 실패한 경우 (고유 한 제약이 위반되는 경우)
    예를 들어, 중복 이메일을 삽입하려고 할 때 $ stmt-> error는 다음과 같은 것을 반환합니다.
    키 '이메일'을위한 "Duplication entry '[email protected]' 에 대한 팁.

디버그 로그와 함께 사용하십시오

후속 문제 해결을 위해 로그에 오류 정보를 로그에 기록 할 수도 있습니다.

 if (!$stmt->execute()) {
    error_log("전처리 실행 오류: " . $stmt->error);
}

이를 통해 제작 환경에서 사용자에게 오류를 드러내지 않고 개발자가 문제를 해결하도록 촉진 할 수 있습니다.

실용적인 조언

  • Return False에 의존하지 마십시오 . 오류 속성과 함께 세부 사항을보십시오.

  • 개발 단계는 오류를 직접 출력 할 수 있습니다. 로그는 생산 환경에서 기록되어야합니다.

  • Errno 와 함께 사용하면보다 자세한 판단을 위해 오류 코드를 얻을 수 있습니다.

요약

MySQLI_STMT :: $ ERROR는 전처리 문을 디버깅하는 데있어 매우 실용적인 도구입니다. 이를 통해 성명서가 실패하는 이유를 신속하게 알 수 있으므로 개발 효율성 속도를 높이고 문제 해결 시간을 줄일 수 있습니다.

개발 과정 에서이 속성을 합리적으로 사용하면 데이터베이스 상호 작용이보다 강력하고 신뢰할 수 있습니다.