Bei Verwendung von PHP -Erweiterung von PHP für Datenbankvorgänge lesen wir normalerweise Daten aus dem Ergebnissatz. Manchmal müssen wir jedoch nicht nur Datenzeilen erhalten, sondern auch auf die Metadaten des Feldes zugreifen, z. B. Feldname, Feldtyp usw. Die Funktion mySQLI_Result :: field_seek () ist ein Tool, das in diesem Fall nützlich ist. In diesem Artikel wird ausführlich den Zweck, die Nutzungsmethode und die praktischen Anwendungsszenarien dieser Funktion vorgestellt.
MySQLi_Result :: Field_seek (int $ field_number): bool
Der Zweck dieser Methode besteht darin, den Feldzeiger auf die angegebene Feldnummer zu verschieben und sich auf den nachfolgenden Aufruf der Methode Fetch_field () vorzubereiten. Die Feldnummern beginnen bei 0.
Diese Funktion gibt einen booleschen Wert zurück, der angibt, ob der Feldzeiger erfolgreich eingestellt ist.
Bei der Analyse der Feldinformationen des Ergebnissatzes verwenden wir häufig feld_seek () mit fetch_field () . Das Folgende ist ein spezifisches Beispiel:
<Code> & lt;? php $ mysqli = new MySQLi ("localhost", "user", "password", "database"); if ($ mysqli-> connect_error) {
Die ("Verbindung fehlgeschlagen:". $ mysqli-> connect_error);
}
$ result = $ mysqli-> Abfrage ("ID, Name, E-Mail von Benutzern auswählen");
if ($ result) {
// Position zum ersten Feld (d. H. ID)
$ result-> field_seek (0);
$ field = $ result-> fetch_field ();
Echo "Feldname:". $ field-> name. "<br>";
// Positionierung zum zweiten Feld(Im Augenblickname)
$result->field_seek(1);
$field = $result->fetch_field();
echo "Feldname: " . $field->name . "<br>";
// Schließende Ergebnissätze und Verbindungen
$result->close();
}
$ mysqli-> close ();
?>
</code>
field_seek () selbst gibt keine Feldinformationen zurück, sondern wird verwendet, um den internen Feldzeiger festzulegen. Die Arbeit, Felddetails wirklich zu extrahieren, erfolgt von Fetch_field () . Daher werden diese beiden Funktionen normalerweise zusammen verwendet.
HINWEIS: Fetch_field () gibt das Feldinformationsobjekt zurück, auf das der aktuelle Feldzeiger verweist, der den Feldnamen, den Tabellennamen, die Länge, den Typ und die anderen Eigenschaften enthält.
Beim Erstellen einer dynamischen Form oder einer API -Ausgangsstruktur müssen wir häufig den Namen, den Datentyp und die anderen Informationen jedes Feldes kennen. In einem Formular Build -Tool können Sie beispielsweise den Feldnamen auf folgende Weise erhalten:
<Code> foreach (Bereich (0, $ result- & gt; field_count-1) als $ i) {$ result- & gt; field_seek ($ i); $ field = $ result- & gt; fetch_field (); Echo "Field $ i:". $ field- & gt; name. "& lt; br & gt;"; } </code>Beim Debuggen komplexer Abfragen müssen Entwickler möglicherweise die Feldstruktur im Ergebnissatz protokollieren oder formatieren. In diesem Szenario ist field_seek () + fetch_field () eine sehr praktische Kombination.
Um leichte ORM -Tools zu erstellen, können Entwickler Klassenattribute durch Lesen von Feldinformationen dynamisch generieren oder Felder in Modellstrukturen kartieren.
Die Feldzahlen beginnen mit 0 : Wenn eine Zahl größer als die Gesamtzahl der Felder festgelegt ist, gibt field_seek () false zurück.
Ergebnissatz Typ Einschränkung : Es ist nur aussagekräftig, wenn die Abfrage Feldinformationen zurückgibt (z. B. Auswahlanweisungen ). Für Operationen wie Einfügen und Update ist es nutzlos.
Ressourcenveröffentlichung : Nach der Verwendung des Objekts von MySQLI_Result sollte Close () -Methode aufgerufen werden, um die Ressource zu veröffentlichen.
Das folgende Beispiel wird verwendet, um die Arten aller Felder in einem Abfrageergebnis zu erhalten:
<Code> $ mysqli = new MySQLi ("localhost", "user", "password", "database"); $ result = $ mysqli- & gt; query ("aus Posts auswählen"); if ($ result) {
für ($ i = 0; $ i <$ result-> field_count; $ i ++) {
$ result-> field_seek ($ i);
$ field = $ result-> fetch_field ();
echo "Feldname: {$ field-> name}, Typ: {$ field-> Typ} <br>";
}
$ result-> close ();
}
$ mysqli-> close ();
</code>
Mysqli_Result :: field_seek () ist eine sehr praktische, aber oft übersehene Funktion. Es ermöglicht uns, flexibel Informationen über willkürliche Felder zu erhalten, insbesondere für den Aufbau allgemeiner Abfrageverarbeitungslogik. Obwohl wir in den meisten Szenarien Funktionen wie Fetch_assoc () verwenden können, bietet field_seek () unersetzliche Komfort, wenn Sie die Feldstruktur verstehen müssen.
Um einen Einblick in fortgeschrittenere Funktionen von MySQLI zu erhalten, können Sie sich auf die offizielle Dokumentation beziehen oder https://gitbox.net/docs/php/mysqli für relevante Informationen besuchen.