Bei der Entwicklung von PHP-basierten Datenbankanwendungen müssen wir häufig die Strukturinformationen der Felder in den Ergebnissen der Datenbankabfrage verstehen, z. B. Feldname, Datentyp, maximale Länge usw. Dies ist sehr hilfreich, um Tabellen dynamisch zu generieren, Datenformate zu überprüfen und sogar automatisch die Formularelemente zu generieren. Glücklicherweise bietet PHP eine leistungsstarke Funktion - Mysqli_Result :: Fetch_field , die uns helfen kann, diese Feldmetadaten leicht zu erhalten.
In diesem Artikel wird Ihnen ein umfassendes Verständnis dafür vermittelt, wie die Funktion mySQLI_Result :: fetch_field die Feldstruktur der Abfrageergebnisse angezeigt und Ihr Verständnis durch bestimmte Codebeispiele vertieft.
Mysqli_Result :: fetch_field () ist eine Methode der MySQLI_Result -Klasse, die ein Objekt zurückgibt, das Informationen zu einem einzelnen Feld im Ergebnissatz darstellt. Jedes Mal, wenn die Methode aufgerufen wird, gibt sie die Informationen für das nächste Feld zurück, bis keine Felder mehr vorhanden sind.
Das zurückgegebene Objekt ist ein STD -Class -Objekt, das mehrere Eigenschaften enthält, einschließlich:
Name : Feldname
Orgname : Originalfeldname (wenn ein Alias verwendet wird)
Tabelle : Der Tabellenname, zu dem das Feld gehört
OrgTable : Original -Tabellenname
Def : Standardwert (veraltet, immer null )
DB : Datenbankname
Katalog : Datenbankverzeichnis (normalerweise "def")
max_length : Die maximale Länge dieses Feldes im Ergebnissatz
Länge : Die Definitionslänge des Feldes
charsetnr : Zeichensatznummer
Flags : Das Flaggenbit des Feldes (z. B. ob es sich um einen Primärschlüssel handelt, ob es null sein kann)
Typ : Der Typ des Feldes (wie MySQLI_Type_string )
Dezimalstellen : Dezimalstellen
Das Folgende ist ein grundlegendes Nutzungsbeispiel, das zeigt, wie Sie eine Verbindung zu einer Datenbank herstellen und die Strukturinformationen der Felder im Abfrageergebnis erhalten.
<Code> & lt;? Php // Datenbankverbindungsparameter $ host = "localhost"; $ user = "root"; $ password = "your_password"; $ database = "test_db"; // eine Datenbankverbindung herstellen
$ conn = new MySQLI ($ host, $ user, $ password, $ database);
// Überprüfen Sie die Verbindung
if ($ conn-> connect_error) {
Die ("Verbindung fehlgeschlagen:". $ conn-> connect_error);
}
// Abfrage ausführen
$ sql = "ID, Benutzername, E -Mail von Benutzern" auswählen ";
$ result = $ conn-> query ($ sql);
if ($ result-> num_rows> 0) {
echo "Feldstrukturinformationen: <br> <br>";
while ($field = $result->fetch_field()) {
echo "Feldname: " . $field->name . "<br>";
echo "Zugehörigkeitstabelle: " . $field->table . "<br>";
echo "原始Feldname: " . $field->orgname . "<br>";
echo "Typ: " . $field->type . "<br>";
echo "Länge: " . $field->length . "<br>";
echo "Ist es möglich NULL: " . ($field->flags & MYSQLI_NOT_NULL_FLAG ? "NEIN" : "Ja") . "<br>";
echo "--------------------------<br>";
}
} anders {
echo "kein Ergebnis";
}
// die Verbindung schließen
$ conn-> close ();
?>
</code>
Der Typ gibt eine Ganzzahlkonstante zurück, die den Feldtyp darstellt, zum Beispiel:
Mysqli_type_long (Integer)
Mysqli_type_var_string (variable Längenzeichenfolge)
MySQLI_TYPE_DATETIME (DateTime)
Sie können diese Konstanten in lesbarere Text umwandeln, indem Sie eine Reihe von Karten definieren.
In ähnlicher Weise ist Flags eine Bitmaske, die verschiedene Eigenschaften des Feldes darstellt, z. B. ob es sich um einen Primärschlüssel handelt, ob es automatisch inkrementiert wird.
Dynamisch generieren Header : Sie können Fetch_field () verwenden, um Feldnamen als Header für HTML -Tabellen dynamisch zu erhalten, insbesondere für unbekannte Spaltenzahlen.
Feldüberprüfung : Das Erhalten der Feldstruktur im Voraus kann überprüfen, ob der Feldtyp und die Länge die Erwartungen erfüllen, wenn die Benutzereingabe verarbeitet oder Daten importiert werden.
Automatische Entwicklung : Kombinieren Sie Feldmetadaten, um die Regeln für automatische Erzeugung und Datenüberprüfung zu entwickeln