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
이 오류 프롬프트는 매개 변수 수의 불일치 문제를 명확하게 지적합니다.
다음 상황 에서이 속성을 사용하여 디버깅 할 수 있습니다.
진술서 생성을 전처리 할 때 <br> $ mysqli-> 오류를 사용하여 오류 정보를 얻으십시오.
파라미터 바인딩이 실패하거나 숫자 불일치
bind_param () 자체 자체는 오류를보고하지 않지만 매개 변수 수가 잘못된 경우 $ stmt-> 오류가 실행될 때 프롬프트됩니다.
실행이 실패한 경우 (고유 한 제약이 위반되는 경우)
예를 들어, 중복 이메일을 삽입하려고 할 때 $ stmt-> error는 다음과 같은 것을 반환합니다.
키 '이메일'을위한 "Duplication entry '[email protected]' 에 대한 팁.
후속 문제 해결을 위해 로그에 오류 정보를 로그에 기록 할 수도 있습니다.
if (!$stmt->execute()) {
error_log("전처리 실행 오류: " . $stmt->error);
}
이를 통해 제작 환경에서 사용자에게 오류를 드러내지 않고 개발자가 문제를 해결하도록 촉진 할 수 있습니다.
Return False에 의존하지 마십시오 . 오류 속성과 함께 세부 사항을보십시오.
개발 단계는 오류를 직접 출력 할 수 있습니다. 로그는 생산 환경에서 기록되어야합니다.
Errno 와 함께 사용하면보다 자세한 판단을 위해 오류 코드를 얻을 수 있습니다.
MySQLI_STMT :: $ ERROR는 전처리 문을 디버깅하는 데있어 매우 실용적인 도구입니다. 이를 통해 성명서가 실패하는 이유를 신속하게 알 수 있으므로 개발 효율성 속도를 높이고 문제 해결 시간을 줄일 수 있습니다.
개발 과정 에서이 속성을 합리적으로 사용하면 데이터베이스 상호 작용이보다 강력하고 신뢰할 수 있습니다.