Wenn wir in PHP Erweiterungen verwenden, um die Datenbank zu betreiben, müssen wir manchmal nicht nur das Abfrageergebnis selbst erhalten, sondern auch die Details der zurückgegebenen Felder der Abfrage wie Feldname, Typ, Länge usw. genannt werden. Diese Informationen werden als Metadaten des Feldes bezeichnet.
In diesem Artikel wird ein spezifisches Beispiel verwendet, um zu erklären, wie Sie MySQLI :: STMT_INIT verwenden, um prepine () und result_metadata () -Methoden zu kombinieren, um die Metadaten von Datenbankfeldern zu erhalten.
Zunächst müssen wir mit der MySQLI -Klasse eine Verbindung zur Datenbank herstellen.
<?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if ($mysqli->connect_errno) {
die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}
?>
Als nächstes verwenden wir STMT_INIT () , um ein MySQLi_stmt -Objekt zu initialisieren und eine SQL -Abfrageanweisung mithilfe von Prepe () -Methode vorzubereiten.
<?php
$stmt = $mysqli->stmt_init();
if (!$stmt->prepare('SELECT id, name, email FROM users WHERE status = ?')) {
die('Die Vorverarbeitung schlug fehl: ' . $stmt->error);
}
?>
Angenommen, wir möchten den Benutzer mit Status = 'Active' abfragen:
<?php
$status = 'active';
$stmt->bind_param('s', $status);
if (!$stmt->execute()) {
die('Ausführung fehlgeschlagen: ' . $stmt->error);
}
?>
Jetzt ist der Punkt hier - wir nennen die result_metadata () -Methode, um die Feldmetadaten des Abfrageergebnisses zu erhalten.
<?php
$metadata = $stmt->result_metadata();
if ($metadata) {
while ($field = $metadata->fetch_field()) {
echo "Feldname: " . $field->name . "<br>";
echo "Feldtyp: " . $field->type . "<br>";
echo "Maximale Länge: " . $field->max_length . "<br>";
echo "<hr>";
}
$metadata->free();
} else {
echo "Keine Metadaten verfügbar。";
}
?>
Hier gibt Fetch_field () ein Objekt zurück, das Felddetails enthält, und gemeinsame Attribute umfassen:
Name → Feldname
Typ → Feldtyp (numerischer Code, müssen das Handbuch vergleichen)
max_length → Feld Maximale Länge (Hinweis: Nur für Ergebnissätze effektiv)
Vergessen Sie nicht, Anweisungen zu veröffentlichen und die Datenbankverbindung zu schließen:
<?php
$stmt->close();
$mysqli->close();
?>
Unter der Annahme, dass die Abfrage drei Felder -ID , Name und E -Mail zurückgibt, kann die Ausgabe wie folgt sein:
Feldname: id
Feldtyp: 3
Maximale Länge: 0
-----------------------
Feldname: name
Feldtyp: 253
Maximale Länge: 0
-----------------------
Feldname: email
Feldtyp: 253
Maximale Länge: 0
Beachten Sie, dass sich der numerische Wert des Feldtyps auf die Typkonstanten im MySQL -Handbuch beziehen muss, wie z .