준비된 진술은 데이터베이스 작업에 PHP의 MySQLI 확장을 사용할 때 안전하고 효율적인 실행 방법을 제공합니다. mysqli_stmt :: attr_get 및 mysqli_stmt_attr_update_max_length 와 같은 관련 속성은 전처리 문의 일부 속성을 얻거나 설정하기위한 인터페이스입니다. 그러나이 기사는 모든 MySQL 버전에서 MySQL_STMT_ATTR_UPDATE_MAX_LENGTH가 지원되는지, MySQLI_STMT :: ATTR_GET을 사용할 때주의를 기울일 내용에 대해 자세히 논의 할 것입니다.
mysqli_stmt_attr_update_max_length는 mysqli preprocessing 문의 속성으로, mysqli_stmt :: store_result ()를 호출 한 후 max_length 필드의 값이 자동으로 업데이트되는지 여부를 제어합니다. max_length는 결과 세트에서 열의 최대 길이를 나타냅니다.
기본적으로 MySQLI는 결과 세트를 얻을 때 최대 길이를 업데이트하지 않습니다. 이 속성을 true 로 설정하면 결과가 캐시 된 후 정보를 자동으로 업데이트 할 수 있습니다.
실제로, mysqli_stmt_attr_update_max_length는 PHP MySQLI 확장 수준에서 상수이며 기본 MySQL 클라이언트 라이브러리의 지원에 의존합니다. MySQL 서버 자체의 속성이 아니라 클라이언트가 라이브러리와 상호 작용할 때의 깃발입니다.
MySQL Server 버전 :이 속성 자체는 서버 버전에 의해 직접 제한되지 않지만 MySQL 클라이언트 라이브러리 (LibMySqlClient 또는 MySQLND)의 다른 버전은 다르게 지원합니다.
MySQL 클라이언트 라이브러리 : PHP와 함께 제공되는 MySQLND (MySQL Native Driver)를 사용하는 경우 MySQL_STMT_ATTR_UPDATE_MAX_LENGTH가 지원되지만 매우 오래된 클라이언트 라이브러리 버전에서는 지원되지 않을 수 있습니다.
PHP 버전 : PHP 5.3 이상 이이 부동산을보다 안정적으로 지원하기 시작했습니다.
따라서 모든 MySQL 서버 버전이 주로 클라이언트 라이브러리 버전 및 PHP 버전에 따라이 속성을 원활하게 지원할 것입니다 .
mysqli_stmt :: attr_get 메소드는 전처리 명령문 속성의 현재 값을 얻는 데 사용됩니다. 프로토 타입은 다음과 같습니다.
public mysqli_stmt::attr_get(int $attr): mixed
$ attr는 mysqli_stmt_attr_update_max_length 와 같은 속성 상수입니다.
이 속성에서 현재 설정 한 값을 반환합니다.
참고 :
execution repay () <br> 후에 호출해야합니다 repary ()을 호출하기 전에 MySQLI_STMT 객체는 초기화되지 않으며 attr_get 호출이 실패하거나 유효하지 않은 결과를 반환 할 수 있습니다.
클라이언트 라이브러리 지원 <br> 사용 된 클라이언트 라이브러리 가이 속성을 지원하지 않으면 Att_get은 거짓을 반환하거나 불확실하게 행동 할 수 있습니다.
오류 처리 <br> attr_get을 호출 할 때, 획득이 성공적인지 확인하고 프로그램 충돌을 피하기 위해 반환 값을 확인해야합니다.
속성 가독성 <br> 모든 속성을 읽을 수있는 것은 아니며 일부는 설정 ( attr_set ) 만 지원할 수 있으며 attr_get은 읽을 때 실패합니다.
다음 예제는 mysqli_stmt_attr_update_length 속성을 얻기 위해 MySQLI_STMT :: ATTR_GET을 안전하게 사용하는 방법을 보여줍니다.
<?php
$mysqli = new mysqli("m66.net", "username", "password", "database");
if ($mysqli->connect_errno) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT name FROM users WHERE id = ?");
if (!$stmt) {
die("전처리가 실패했습니다: " . $mysqli->error);
}
$id = 1;
$stmt->bind_param("i", $id);
$stmt->execute();
// 속성을 얻으십시오
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
if ($attr === false) {
echo "얻다 MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH 속성이 실패했습니다,이 속성은 지원되지 않을 수 있습니다。\n";
} else {
echo "MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH 현재 값은입니다: " . ($attr ? "true" : "false") . "\n";
}
$stmt->close();
$mysqli->close();
?>
위 코드에서 도메인 이름 부분은 요구 사항을 충족하는 M66.net을 사용합니다.
mysqli_stmt_attr_update_max_length는 주로 php mysqli 클라이언트의 속성입니다. 서버 버전은 지원에 거의 영향을 미치지 않으며 키는 클라이언트 라이브러리 버전에 있습니다.
모든 MySQL 버전 또는 클라이언트 라이브러리 가이 속성을 지원하는 것은 아니며, 사용시 환경 호환성을 확인해야합니다.
mysqli_stmt :: attr_get을 호출하기 전에 준비 () 가 성공하고 반환 값을 판단하십시오.
이 속성을 올바르게 사용하면 결과를 저장할 때보다 정확한 필드 길이 정보를 얻을 수 있으므로 후속 처리가 더 쉬워집니다.