Aktueller Standort: Startseite> Neueste Artikel> Wie kann ich Daten aus mehreren Zeilen und Spalten mit MySQLI_Result :: fetch_column korrekt erhalten? Best Practice Sharing

Wie kann ich Daten aus mehreren Zeilen und Spalten mit MySQLI_Result :: fetch_column korrekt erhalten? Best Practice Sharing

gitbox 2025-06-17

Bei Verwendung von MySQL -Datenbank müssen wir häufig Daten aus einer Spalte der Daten aus den Abfrageergebnissen extrahieren. Die MySQLI -Erweiterung bietet mehrere Möglichkeiten, um die Abfrageergebnisse zu durchqueren. MySQLI_Result :: Fetch_Column ist eine der sehr bequemen Funktionen, mit denen wir alle Daten aus einer bestimmten Spalte effizient extrahieren können. In diesem Artikel werden wir untersuchen, wie Fetch_Column korrekt verwendet werden, um Daten aus mehreren Zeilen und Spalten zu erhalten und Best Practices zur Optimierung des Codes bereitzustellen.

1. Einführung in MySQLI_Result :: Fetch_Column

MySQLi_Result :: Fetch_Column ist eine Methode der MySQLI_Result -Klasse, die Daten für eine bestimmte Spalte aus Abfrageergebnissen abruft. Im Gegensatz zu Methoden wie Fetch_assoc oder Fetch_row gibt Fetch_Column nur Daten für eine einzelne Spalte zurück und holt alle Zeilen gleichzeitig anstelle von Zeile für Zeile ab.

Methodensignatur

 <span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli_fetch_column</span></span><span>(mysqli_result </span><span><span class="hljs-variable">$result</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$column</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>;
</span></span>
  • $ Ergebnis : Das von MySQLI_Query () oder andere ähnliche Funktionen zurückgegebene Ergebnis -Set -Objekt.

  • $ Spalte : Gibt den Index der zu abgerufenen Spalte an, die Standardeinstellung ist 0 , dh die erste Spalte.

Diese Methode gibt ein Array zurück, das Daten aus der angegebenen Spalte enthält, und wenn keine Daten oder ein Fehler auftreten, gibt es False zurück.

2. Grundnutzung

Angenommen, wir haben eine Tabelle mit dem Namen Benutzer mit Fields -ID , Name und E -Mail . Wir möchten die Namensfelder für alle Benutzer extrahieren.

 <span><span><span class="hljs-comment">// Datenbankverbindung</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-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"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>-&gt;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>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// Eine Frage ausführen</span></span><span>
</span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"SELECT name FROM users"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>);

</span><span><span class="hljs-comment">// verwenden fetch_column Holen Sie sich alles name Felddaten</span></span><span>
</span><span><span class="hljs-variable">$names</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);

</span><span><span class="hljs-comment">// Ausgangsergebnis</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$names</span></span><span>) {
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$names</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Keine Daten。"</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>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>

Im obigen Code nimmt Fetch_Column (0) alle Daten der Namensspalte im Abfrageergebnis und gibt es als Array zurück. Wir gehen dann für den jeweiligen Namen durch und geben jeden Namen aus.

1. Szenarien anwendbar

Szenario 1: Einzelspaltendaten für die nachfolgende Verarbeitung extrahieren

Wenn Sie nur eine Datenspalte für die nachfolgende Verarbeitung benötigen (z. B. das Generieren von Auswahlfeldern oder dynamisch besiedelnde Daten), ist Fetch_Column eine sehr effiziente Wahl. Es vermeidet die Notwendigkeit, unnötige Spaltendaten zu verarbeiten, wenn Fetch_assoc oder Fetch_row verwendet werden.

Szenario 2: Leistung optimieren

Bei der Verarbeitung großer Datenmengen kann Fetch_Column im Vergleich zu anderen Methoden den Speicherverbrauch erheblich reduzieren, da nur die von Ihnen benötigten Spaltendaten und nicht die Daten der gesamten Zeile abgerufen werden. Für Szenarien mit hohen Leistungsanforderungen kann diese Methode die Abfrageleistung effektiv optimieren.

4. Best Practices

4.1 Verwendung vorbereiteter Aussagen

Obwohl Fetch_Column bequem und schnell ist, kann die Verwendung von RAW -SQL -Abfragen in der tatsächlichen Entwicklung das Risiko einer SQL -Injektion aufweisen. Daher besteht die beste Praxis darin, immer vorbereitete Aussagen zu verwenden, um die Sicherheit zu gewährleisten.

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT name FROM users WHERE age &gt; ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>);
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">18</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">get_result</span></span><span>();
</span><span><span class="hljs-variable">$names</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);

</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">$names</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
}

</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>

4.2 Fehlerbehandlung

Die Fehlerbehandlung ist bei Datenbankoperationen von entscheidender Bedeutung. Überprüfen Sie unbedingt, ob die Abfrage erfolgreich ist, und behandeln Sie mögliche Fehler. MySQLI_ERROR () und MySQLI_errno () können Ihnen helfen, spezifische Fehlerinformationen für die Fehlerbehebung zu erhalten.

 <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-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>-&gt;error);
}
</span></span>

4.3 Ressourcen veröffentlicht

Rufen Sie nach der Verarbeitung der Abfrageergebnisse mySQLI_FREE_RESULT () auf oder schließen Sie die Datenbankverbindung, um die Ressource zu freien. Während diese Ressourcen am Ende des Skripts automatisch veröffentlicht werden, ist es eine bessere Praxis, explizit Ressourcen zu veröffentlichen.

 <span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">free</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>

5. Zusammenfassung

Die Verwendung von MySQLI_Result :: Fetch_column , um Daten aus mehreren Zeilen und Spalten zu erhalten, ist ein einfacher und effizienter Weg, um den Code erheblich zu vereinfachen und die Leistung zu verbessern. Geben Sie einfach den Spaltenindex an und Sie können alle Daten direkt abrufen und unnötige Schleifenquellen vermeiden. Darüber hinaus kann die Verwendung vorbereiteter Aussagen und Fehlerbehandlungsmechanismen die Sicherheit und Robustheit des Programms verbessern.

Ich hoffe, dass Sie durch die Einführung dieses Artikels Ihnen helfen können, Fetch_Column besser zu verstehen und zu verwenden und Ihre Entwicklungseffizienz und Ihre Codequalität zu verbessern.