MySQLi Metadata

MySQL 결과 세트에는 메타데이터가 포함됩니다. 메타데이터는 결과 집합에서 찾은 열을 설명합니다. MySQL에서 보낸 모든 메타데이터는 mysqli 인터페이스를 통해 액세스할 수 있습니다. 확장 프로그램은 수신한 정보에 대해 변경을 수행하지 않거나 무시할 수 있습니다. MySQL 서버 버전 간의 차이는 정렬되지 않습니다.

메타 데이터는 mysqli_result 인터페이스를 통한 액세스입니다.

예제 #1 결과 집합 메타 데이터 액세스

                  
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");

$result = $mysqli->query("SELECT 1 AS _one, 'Hello' AS _two FROM DUAL");
var_dump($result->fetch_fields());
                  
                

위의 예는 다음을 출력합니다.

array(2) {
  [0]=>
  object(stdClass)#3 (13) {
    ["name"]=>
    string(4) "_one"
    ["orgname"]=>
    string(0) ""
    ["table"]=>
    string(0) ""
    ["orgtable"]=>
    string(0) ""
    ["def"]=>
    string(0) ""
    ["db"]=>
    string(0) ""
    ["catalog"]=>
    string(3) "def"
    ["max_length"]=>
    int(1)
    ["length"]=>
    int(1)
    ["charsetnr"]=>
    int(63)
    ["flags"]=>
    int(32897)
    ["type"]=>
    int(8)
    ["decimals"]=>
    int(0)
  }
  [1]=>
  object(stdClass)#4 (13) {
    ["name"]=>
    string(4) "_two"
    ["orgname"]=>
    string(0) ""
    ["table"]=>
    string(0) ""
    ["orgtable"]=>
    string(0) ""
    ["def"]=>
    string(0) ""
    ["db"]=>
    string(0) ""
    ["catalog"]=>
    string(3) "def"
    ["max_length"]=>
    int(5)
    ["length"]=>
    int(5)
    ["charsetnr"]=>
    int(8)
    ["flags"]=>
    int(1)
    ["type"]=>
    int(253)
    ["decimals"]=>
    int(31)
  }
}
                

Prepared statements

준비된 명령문을 사용하여 생성된 결과 집합의 메타 데이터도 동일한 방식으로 액세스됩니다. 적절한 mysqli_result 핸들은 mysqli_stmt::result_metadata()에 의해 반환됩니다.

예제 #2 준비된 명령문 메타데이터

                  
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");

$stmt = $mysqli->prepare("SELECT 1 AS _one, 'Hello' AS _two FROM DUAL");
$stmt->execute();
$result = $stmt->result_metadata();
var_dump($result->fetch_fields());
                  
                
기타