mysqli_fetch_fields în PHP

Returnează informațiile despre toate coloanele din rezultat, ca tablou de obiecte.

Sintaxă
mysqli_fetch_fields(mysqli_result $result): array

Ce face mysqli_fetch_fields

Face același lucru ca un while cu mysqli_fetch_field, dar dintr-un singur apel. Obiectele au aceleași proprietăți (name, table, type, length…). Este util pentru a construi automat capul unui tabel HTML.

Exemplele de pe această pagină folosesc baza de date magazin, cu tabelul produse (coloanele id INT AUTO_INCREMENT, nume VARCHAR(100) NOT NULL, pret INT și stoc INT) și patru rânduri: Laptop (3200 lei, 5 buc.), Mouse (80 lei, 40 buc.), Monitor (900 lei, 0 buc.) și Tastatură (150 lei, 12 buc.). Comenzile SQL sunt explicate în secțiunea MySQL. Rezultatele au fost scrise pentru MySQL 8, pentru că exemplele au nevoie de un server de baze de date.

Parametri

Parametru Descriere
$result Rezultatul interogării.

Ce returnează

Un tablou de obiecte, câte unul pentru fiecare coloană.

Exemple

Exemplul 1: Tabel HTML cu capul generat automat

<?php
$conn = mysqli_connect("localhost", "ana", "parola_ta", "magazin");
mysqli_set_charset($conn, "utf8mb4");

$rezultat = mysqli_query($conn, "SELECT nume, pret FROM produse WHERE stoc > 10 ORDER BY id");

echo "<table>\n<tr>";
foreach (mysqli_fetch_fields($rezultat) as $coloana) {
    echo "<th>" . htmlspecialchars($coloana->name) . "</th>";
}
echo "</tr>\n";
while ($rand = mysqli_fetch_row($rezultat)) {
    echo "<tr><td>" . implode("</td><td>", array_map("htmlspecialchars", $rand)) . "</td></tr>\n";
}
echo "</table>";

Rezultat (cu un server MySQL și tabelul produse de mai sus)

<table>
<tr><th>nume</th><th>pret</th></tr>
<tr><td>Mouse</td><td>80</td></tr>
<tr><td>Tastatură</td><td>150</td></tr>
</table>

Greșeli frecvente

  • Apelezi mysqli_fetch_fields după câteva mysqli_fetch_field și te aștepți doar la coloanele rămase. mysqli_fetch_fields dă mereu toate coloanele.

Comenzi înrudite

  • mysqli_fetch_field: Returnează informațiile despre următoarea coloană din rezultat: nume, tabel, tip, lungime.
  • mysqli_num_fields: Returnează numărul de coloane dintr-un rezultat.
  • mysqli_stmt_result_metadata: Returnează informațiile despre coloanele rezultatului unei interogări pregătite, fără rânduri.