Nachdem Datenbankabfragen mit MySQLI in PHP ausgeführt wurden, möchten wir normalerweise alle Abfrageergebnisse effizient und bequem erhalten. In objektorientierter MySQLi-Verwendung ist MySQLI_Result :: Fetch_all eine sehr prägnante Möglichkeit, alle Ergebnisse gleichzeitig zu erzielen und sie als Array zurückzugeben. In diesem Artikel wird detailliert eingeführt, wie die Fetch_all -Methode verwendet und die Nutzungsszenarien und Vorsichtsmaßnahmen analysiert werden.
Mysqli_Result :: Fetch_all ist eine Methode in der MySQLI_Result -Klasse, mit der alle Zeilen im Abfrageergebnis gleichzeitig abgerufen werden. Es gibt ein zweidimensionales Array zurück, jede Zeile stellt einen Datensatz im Abfrageergebnis dar.
Die Syntax ist wie folgt:
<span><span><span class="hljs-keyword">array</span></span><span> mysqli_result::</span><span><span class="hljs-title function_ invoke__">fetch_all</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$mode</span></span><span> = MYSQLI_NUM)
</span></span>
Mit dem Parameter $ modus wird das Format des Rückkehrarrays definiert. Häufig verwendete sind:
MySQLI_NUM : Gibt das numerische Indexarray zurück.
Mysqli_assoc : Gibt das assoziative Indexarray (Feldname als Schlüssel) zurück.
Mysqli_both : Gibt sowohl die Nummer als auch den zugehörigen Index zurück.
Im Folgenden demonstrieren wir die Verwendung von Fetch_all durch ein vollständiges Beispiel.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Datenbankverbindungskonfiguration</span></span><span>
</span><span><span class="hljs-variable">$host</span></span><span> = </span><span><span class="hljs-string">"localhost"</span></span><span>;
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-string">"root"</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$database</span></span><span> = </span><span><span class="hljs-string">"test_db"</span></span><span>;
</span><span><span class="hljs-comment">// Eine Verbindung erstellen</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$database</span></span><span>);
</span><span><span class="hljs-comment">// Überprüfen Sie, ob die Verbindung erfolgreich ist</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Verbindung ist fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// Abfrageanweisung</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT id, name, email FROM users"</span></span><span>;
</span><span><span class="hljs-comment">// Eine Frage ausführen</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);
</span><span><span class="hljs-comment">// Überprüfen Sie, ob die Abfrage erfolgreich ist</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Abfrage fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error);
}
</span><span><span class="hljs-comment">// verwenden fetch_all Holen Sie sich alle Ergebnisse(Assoziative Array -Methode)</span></span><span>
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_all</span></span><span>(MYSQLI_ASSOC);
</span><span><span class="hljs-comment">// Ausgangsergebnis</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$data</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ID: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] . </span><span><span class="hljs-string">"<br>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Name: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">"<br>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Email: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'email'</span></span><span>] . </span><span><span class="hljs-string">"<br><br>"</span></span><span>;
}
</span><span><span class="hljs-comment">// Füllen Sie das Ergebnissatz frei</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">free</span></span><span>();
</span><span><span class="hljs-comment">// Schließen Sie die Verbindung</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Präzise : Im Vergleich zur herkömmlichen Schreibmethode ($ row = $ result-> fetch_assoc ()) gibt es weniger Code und klarer.
Effizienz : Laden Sie alle Daten gleichzeitig in den Speicher, geeignet für die Verarbeitung kleiner bis mittlerer Datensätze.
Flexibilität : Unterstützt mehrere Array -Formate (numerischer Index, zugehöriger Index oder beides).
Verwalten Sie Vorsicht, wenn das Datenvolumen groß ist : Da fetch_all alle Daten gleichzeitig in den Speicher lädt und Speicherüberlauf auftritt, wenn das Datenvolumen zu groß ist.
MySQL Native Treiber (MySQLND) Anforderungen : Die Fetch_all -Methode erfordert MySQLND (MySQL Native Treiber). In einigen alten PHP -Konfigurationen ist diese Methode möglicherweise nicht verfügbar, wenn MySQLND nicht aktiviert ist.
Fehlerbehandlung : Es wird empfohlen, immer zu überprüfen, ob das Abfrageergebnis falsch ist, damit SQL -Ausführungsfehler rechtzeitig gefangen werden können.
Mit MySQLi_Result :: Fetch_all können PHP -Entwickler komplette Abfrageergebnisse aus der Datenbank effizienter erhalten. Obwohl diese Methode einfach und bequem ist, ist es weiterhin erforderlich, anhand des tatsächlichen Datenvolumens und der Systemressourcen während der Verwendung angemessene Entscheidungen zu treffen. Wenn Sie die Nutzungsszenarien beherrschen, werden die Effizienz Ihres Datenbankbetriebs und die Lesbarkeit der Code verbessern.