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());