Metadaten

Eine MySQL-Ergebnismenge enthält Metadaten. Die Metadaten beschreiben die Spalten, die in der Ergebnismenge gefunden werden. Alle von MySQL gesendeten Metadaten sind über die mysqli-Schnittstelle verfügbar. Die Erweiterung führt keine oder vernachlässigbare Änderungen an den Informationen durch, die sie empfängt. Die Unterschiede zwischen den MySQL-Server-Versionen werden nicht angeglichen.

Auf die Metadaten wird über die mysqli_result-Schnittstelle zugegriffen.

Beispiel #1 Zugriff auf die Metadaten der Ergebnismenge

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

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

 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) } } 

Vorbereitete Anweisungen

Auf die Metadaten von Ergebnismengen, die mit vorbereiteten Anweisungen erstellt wurden, wird auf die gleiche Weise zugegriffen. Ein geeignetes mysqli_result-Handle wird von mysqli_stmt::result_metadata() zurückgegeben.

Beispiel #2 Metadaten der vorbereiteten Anweisungen

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

Siehe auch

To Top