mysqli_stmt_data_seek în PHP

Mută cursorul la un anumit rând în rezultatul păstrat al unei interogări pregătite.

Sintaxă
mysqli_stmt_data_seek(mysqli_stmt $statement, int $offset): void

Ce face mysqli_stmt_data_seek

Funcționează doar după mysqli_stmt_store_result. Poziția începe de la 0. Următorul mysqli_stmt_fetch citește rândul de la acea poziție.

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
$statement Interogarea pregătită, cu rezultatul păstrat.
$offset Poziția rândului, de la 0.

Ce returnează

Nimic.

Exemple

Exemplul 1: Ultimul rând al rezultatului

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

$stmt = mysqli_prepare($conn, "SELECT nume FROM produse ORDER BY pret");
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
mysqli_stmt_bind_result($stmt, $nume);

mysqli_stmt_data_seek($stmt, mysqli_stmt_num_rows($stmt) - 1);
mysqli_stmt_fetch($stmt);
echo "Cel mai scump: $nume";

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

Cel mai scump: Laptop

Greșeli frecvente

  • Folosești funcția fără mysqli_stmt_store_result. Cursorul nu se mută și mysqli_stmt_fetch continuă de unde era.

Comenzi înrudite

  • mysqli_stmt_store_result: Aduce în memorie tot rezultatul unei interogări pregătite, ca să poți afla numărul de rânduri și să sari între ele.
  • mysqli_data_seek: Mută cursorul rezultatului la un anumit rând, ca următorul fetch să înceapă de acolo.
  • mysqli_stmt_fetch: Citește următorul rând al unei interogări pregătite în variabilele legate cu mysqli_stmt_bind_result.