Aktueller Standort: Startseite> Neueste Artikel> Gibt es ein vollständiges Code -Beispiel für MySQLi_stmt :: result_metadata, um die Ergebnis -Set -Struktur zu erhalten? Wie schreibe ich es?

Gibt es ein vollständiges Code -Beispiel für MySQLi_stmt :: result_metadata, um die Ergebnis -Set -Struktur zu erhalten? Wie schreibe ich es?

gitbox 2025-06-08

In PHP ist MySQLi_stmt :: result_metadata eine häufig verwendete Methode, um die Metadaten (d. H. Feldstruktur) des Ergebnissatzes zu erhalten, das einer vorbereiteten Anweisung entspricht. Diese Methode ist sehr nützlich, um Spalteninformationen für Abfrageergebnisse dynamisch zu generieren und weitere Operationen wie Bindungsspalten durchzuführen. Als nächstes werde ich ein vollständiges Code -Beispiel zeigen, das zeigt, wie Sie mySQLI_STMT :: result_metadata verwenden, um die Ergebnis -Set -Struktur zu erhalten.

1. Verbinden Sie eine Verbindung zur Datenbank

Zunächst müssen wir über MySQLI eine Verbindung zur Datenbank herstellen. Angenommen, Sie haben bereits eine MySQL -Datenbank. Hier ist der grundlegende Code für die Verbindung:

 <?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'test_database';

// Eine Verbindung erstellen
$conn = new mysqli($host, $username, $password, $dbname);

// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($conn->connect_error) {
    die("Verbindung ist fehlgeschlagen: " . $conn->connect_error);
}
?>

2. Bereiten Sie die SQL -Abfrage vor

Angenommen, wir haben eine Tabelle Benutzer , deren Struktur drei Felder enthält: ID , Name und E -Mail , und wir müssen die Metadaten dieser Felder erhalten. Erstellen Sie zuerst eine Anweisung für Abfragen:

 $sql = "SELECT id, name, email FROM users";
$stmt = $conn->prepare($sql);

if ($stmt === false) {
    die('MySQL prepare failed: ' . $conn->error);
}

3. Holen Sie sich das Ergebnis -Set -Metadaten

Wir verwenden die MySQLI_STMT :: result_metadata -Methode, um die Metadaten des Ergebnissatzes zu erhalten. Diese Methode gibt ein MySQLI_Result -Objekt zurück, das die Feldinformationen des Abfrageergebnisses enthält. Als nächstes werden wir die Feldinformationen iterieren und den Namen jedes Feldes ausgeben.

 $result_metadata = $stmt->result_metadata();

if ($result_metadata === false) {
    die('Es können keine Ergebnismenge Metadaten abgerufen werden');
}

$columns = [];
while ($column = $result_metadata->fetch_field()) {
    $columns[] = $column->name;
}

echo "Der Feldname des Abfrageergebnisses:<br>";
foreach ($columns as $column_name) {
    echo $column_name . "<br>";
}

4. Binden Spalten

Nachdem Sie die Metadaten des Feldes erhalten haben, können Sie die Methode mySQLI_STMT :: BIND_RESULT verwenden, um jede Spalte in das Ergebnis zu binden an eine PHP -Variable. Hier ist ein Beispiel dafür, wie man eine Spalte binden und das Ergebnis erhalten:

 // Spalte binden
$stmt->bind_result($id, $name, $email);

// Eine Frage ausführen
$stmt->execute();

// Ergebnisse erhalten
while ($stmt->fetch()) {
    echo "ID: $id, Name: $name, Email: $email <br>";
}

// Aussage
$stmt->close();

5. Vollständiges Beispiel

Hier ist ein komplettes Code -Beispiel, das die oben genannten Teile zusammenbringt:

 <?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'test_database';

// Eine Verbindung erstellen
$conn = new mysqli($host, $username, $password, $dbname);

// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($conn->connect_error) {
    die("Verbindung ist fehlgeschlagen: " . $conn->connect_error);
}

$sql = "SELECT id, name, email FROM users";
$stmt = $conn->prepare($sql);

if ($stmt === false) {
    die('MySQL prepare failed: ' . $conn->error);
}

// Ergebnisse erhalten集元数据
$result_metadata = $stmt->result_metadata();

if ($result_metadata === false) {
    die('Es können keine Ergebnismenge Metadaten abgerufen werden');
}

$columns = [];
while ($column = $result_metadata->fetch_field()) {
    $columns[] = $column->name;
}

echo "Der Feldname des Abfrageergebnisses:<br>";
foreach ($columns as $column_name) {
    echo $column_name . "<br>";
}

// Spalte binden
$stmt->bind_result($id, $name, $email);

// Eine Frage ausführen
$stmt->execute();

// Ergebnisse erhalten
while ($stmt->fetch()) {
    echo "ID: $id, Name: $name, Email: $email <br>";
}

// Aussage
$stmt->close();

// Schließen Sie die Verbindung
$conn->close();
?>

6. Zusammenfassung

Verwenden Sie MySQLI_STMT :: result_metadata , um die Ergebnis -Set -Struktur einer vorbereiteten Anweisung -Abfrage einfach zu erhalten. Nachdem Sie Feldinformationen erhalten haben, können Sie die Spalten nach Bedarf dynamisch binden und die Abfrageergebnisse extrahieren. Dies ist sehr nützlich, wenn es um komplexe Abfragen geht und dynamische Seiten generiert.