PHP의 MySQLI Extension을 사용하여 데이터베이스 작업을 처리 할 때 MySQLI_STMT :: ATT_GET 기능은 전처리 명령문 객체의 속성을 얻는 데 사용됩니다. 그러나 개발자는 종종이 기능이 예상치 못한 데이터를 반환하는 상황에 직면하여 프로그램 논리의 혼란이나 오류가 발생합니다. 이 기사는 PHP 코드 예제를 결합하여 mysqli_stmt :: att_get 함수가 반환 한 예외의 원인을 분석하고 해당 솔루션을 제공합니다.
mysqli_stmt :: attr_get은 지정된 전처리 명령문 속성을 가져 오는 mysqli_stmt 클래스의 메소드입니다. 일반적인 사용법은 다음과 같습니다.
$mysqli = new mysqli("m66.net", "user", "password", "database");
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
die("Prepare failed: " . $mysqli->error);
}
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
var_dump($attr);
이 함수는 속성 상수를 매개 변수로 받아들이고 해당 속성 값을 반환합니다.
attr_get 함수의 매개 변수는 합법적이고 지원되는 속성 상수 여야합니다.
mysqli_stmt_attr_update_max_length
mysqli_stmt_attr_cursor_type
mysqli_stmt_attr_prefetch_rows
정의되지 않은 또는 지원되지 않은 상수와 같은 잘못된 매개 변수가 전달되면 함수는 False 또는 기타 예기치 않은 데이터를 반환 할 수 있습니다.
전처리 명령문이 성공적으로 생성되지 않으면 Attr_get 메소드를 호출하면 예외 결과도 반환됩니다. 예를 들어:
$stmt = $mysqli->prepare("INVALID SQL");
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
$ stmt 는 false 이므로 attr_get을 호출하면 오류를보고하거나 예기치 않은 데이터를 반환합니다.
mysqli_stmt :: attr_get 함수의 구현 세부 사항은 MySQL 서버 버전 또는 PHP 버전에서 다를 수 있습니다. 일부 속성은 하위 버전에서 지원되지 않으므로 반환 값이 예외입니다.
attr_get을 호출 할 때, 들어오는 상수가 유효하고 지원되었는지 확인하십시오.
$valid_attrs = [
MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH,
MYSQLI_STMT_ATTR_CURSOR_TYPE,
MYSQLI_STMT_ATTR_PREFETCH_ROWS,
];
$attr_key = MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH;
if (in_array($attr_key, $valid_attrs, true)) {
$attr_value = $stmt->attr_get($attr_key);
var_dump($attr_value);
} else {
echo "Invalid attribute key.";
}
준비를 한 후 $ stmt가 거짓이 아니라는 것을 확인해야합니다.
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
die("Prepare failed: " . $mysqli->error);
}
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
var_dump($attr);
Att_get이 예외를 반환하면 MySQL Server 및 PHP를 최신 안정 버전으로 업그레이드하여 속성 상수에 대한 지원이 더 완전한지 확인하십시오.
mysqli_stmt :: attr_get을 반환하는 주된 이유는 다음과 같습니다.
매개 변수는 잘못된 속성 상수로 전달됩니다.
전처리 명세서는 성공적으로 생성되거나 초기화되지 않았습니다.
버전 호환성 문제.
속성 매개 변수를 표준화하고 전처리 문의 상태를 엄격하게 확인하고 소프트웨어 버전을 업그레이드하면 비정상적인 데이터 발생을 효과적으로 피할 수 있습니다. 위의 코드 예제를 결합하여 개발자는 Att_get 메소드를보다 안정적으로 사용하여 데이터베이스 작업의 보안 및 안정성을 향상시킬 수 있습니다.