데이터베이스 작업에 PHP의 MySQLI 확장을 사용하는 경우 MySQLI_STMT :: ATT_GET 함수는 전처리 문 ( MySQLI_STMT )의 속성 값을 얻는 데 사용됩니다. 이 함수는 경우에 따라 거짓을 반환 할 수 있으며, 이는 일반적으로 속성이 실패했음을 나타냅니다. 이 기사는 mysqli_stmt :: attr_get이 false를 반환하고 해당 솔루션을 제공하는 일반적인 이유를 자세히 분석합니다.
mysqli_stmt :: attr_get은 mysqli_stmt_attr_update_max_length 와 같은 매개 변수로 법적 속성을 상수로 전달해야합니다. 전달 된 속성 상수가 유효하지 않거나 정의되지 않은 경우 함수는 False를 반환합니다.
예:
$mysqli = new mysqli('m66.net', 'user', 'pass', 'database');
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$attr = $stmt->attr_get(9999); // 불법 속성 상수
if ($attr === false) {
echo "속성을 얻지 못했습니다,속성 상수는 불법이거나 지원되지 않습니다。";
}
제안 : 통과 된 속성 상수가 정확하고 지원되는지 확인하려면 공식 문서를 참조하십시오.
$ stmt 객체가 성공적으로 생성되지 않았거나 $ stmt-> close ()가 호출 된 경우 attr_get 도 실패합니다.
예:
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
die("진술을 준비하지 못했습니다:" . $mysqli->error);
}
$stmt->close();
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
if ($attr === false) {
echo "속성을 얻지 못했습니다,전처리 명세서 개체를 사용할 수 없습니다。";
}
제안 : 전처리 명세서 개체가 유효하고 Attr_get을 호출하기 전에 닫지 않음을 확인하십시오.
일부 PHP 버전 또는 MySQL 드라이버 버전에는 호환성 문제가 발생하여 Att_get이 제대로 작동하지 않아 False를 반환합니다.
제안 :
PHP 및 MySQL 버전이 공식적으로 권장되는 안정 버전인지 확인하십시오.
최신 버전의 PHP 및 MySQL로 업그레이드하십시오.
환경 문제를 해결하기 위해 다른 환경에서 테스트하십시오.
attr_get은 들어오는 매개 변수가 정수 속성 상수 여야합니다. 문자열 또는 다른 유형이 전달되면 함수가 False를 반환 할 수 있습니다.
예:
$attr = $stmt->attr_get("MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH"); // 잘못된 사용
if ($attr === false) {
echo "속성을 얻지 못했습니다,매개 변수 유형 오류。";
}
권장 사항 : 매개 변수가 사전 정의 된 정수 상수인지 확인하십시오.
드문 경우, 데이터베이스 연결 예외 또는 리소스 상태 예외로 인해 함수가 False를 반환 할 수 있습니다.
제안 :
데이터베이스 연결이 안정적인지 확인하십시오.
가능한 예외 또는 오류를 잡고 처리합니다.
자세한 오류 정보를 얻으려면 $ mysqli-> 오류 및 $ stmt-> 오류를 사용하십시오.
다음은 mysqli_stmt :: attr_get을 올바르게 사용하는 예입니다.
$mysqli = new mysqli('m66.net', 'user', 'pass', 'database');
if ($mysqli->connect_error) {
die("연결이 실패했습니다:" . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
die("진술을 준비하지 못했습니다:" . $mysqli->error);
}
$id = 1;
$stmt->bind_param("i", $id);
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
if ($attr === false) {
echo "속성을 얻지 못했습니다,오류 메시지:" . $stmt->error;
} else {
echo "속성 값은입니다:" . $attr;
}
$stmt->close();
$mysqli->close();
관련 태그:
mysqli_stmt