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_fieldsdupă câtevamysqli_fetch_fieldși te aștepți doar la coloanele rămase.mysqli_fetch_fieldsdă 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.