Ce face mysqli_data_seek
Rezultatul unei interogări are un cursor care arată rândul următor. mysqli_data_seek($rezultat, 0) îl readuce la început, deci poți parcurge rezultatul a doua oară fără să repeți interogarea. Poziția începe de la 0.
Funcționează doar cu rezultate păstrate în memorie (modul implicit MYSQLI_STORE_RESULT), nu cu MYSQLI_USE_RESULT.
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. |
$offset |
Poziția rândului, de la 0 la numărul de rânduri minus 1. |
Ce returnează
true la succes, false dacă poziția nu există.
Exemple
Exemplul 1: Două parcurgeri ale aceluiași rezultat
<?php
$conn = mysqli_connect("localhost", "ana", "parola_ta", "magazin");
mysqli_set_charset($conn, "utf8mb4");
$rezultat = mysqli_query($conn, "SELECT nume, pret FROM produse ORDER BY id");
$total = 0;
while ($r = mysqli_fetch_assoc($rezultat)) {
$total += $r["pret"];
}
mysqli_data_seek($rezultat, 2);
echo "Al treilea produs: " . mysqli_fetch_assoc($rezultat)["nume"] . "\n";
echo "Total prețuri: $total lei\n";
var_dump(mysqli_data_seek($rezultat, 10));
Rezultat (cu un server MySQL și tabelul produse de mai sus)
Al treilea produs: Monitor
Total prețuri: 4330 lei
bool(false)
Greșeli frecvente
- Numeri rândurile de la 1. Primul rând are poziția 0, deci
mysqli_data_seek($r, 1)sare la al doilea.
Comenzi înrudite
mysqli_fetch_assoc / mysqli_fetch_all / mysqli_fetch_array: Citește următorul rând dintr-un rezultat, ca tablou cu numele coloanelor drept chei.mysqli_num_rows: Returnează numărul de rânduri dintr-un rezultat SELECT.mysqli_stmt_data_seek: Mută cursorul la un anumit rând în rezultatul păstrat al unei interogări pregătite.