mysqli_stmt_attr_set în PHP

Setează un atribut al interogării pregătite, de exemplu un cursor doar pentru citire.

Sintaxă
mysqli_stmt_attr_set(mysqli_stmt $statement, int $attribute, int $value): bool

Ce face mysqli_stmt_attr_set

Cu MYSQLI_STMT_ATTR_CURSOR_TYPE = MYSQLI_CURSOR_TYPE_READ_ONLY, serverul deschide un cursor și trimite rândurile pe măsură ce le ceri, iar conexiunea poate rula alte interogări între timp. Cu MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH = 1, store_result calculează proprietatea max_length a coloanelor.

Atributele se setează după mysqli_prepare și înainte de mysqli_stmt_execute.

Parametri

Parametru Descriere
$statement Interogarea pregătită.
$attribute Atributul.
$value Valoarea nouă.

Ce returnează

true la succes.

Exemple

Exemplul 1: Setare și verificare

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

$stmt = mysqli_prepare($conn, "SELECT nume FROM produse");
var_dump(mysqli_stmt_attr_set($stmt, MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH, 1));
var_dump(mysqli_stmt_attr_get($stmt, MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH));

mysqli_stmt_attr_set($stmt, MYSQLI_STMT_ATTR_CURSOR_TYPE, MYSQLI_CURSOR_TYPE_READ_ONLY);
var_dump(mysqli_stmt_attr_get($stmt, MYSQLI_STMT_ATTR_CURSOR_TYPE) === MYSQLI_CURSOR_TYPE_READ_ONLY);

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

bool(true)
int(1)
bool(true)

Greșeli frecvente

  • Setezi atributul după mysqli_stmt_execute. Nu mai are efect pentru execuția deja făcută.

Comenzi înrudite

  • mysqli_stmt_attr_get: Citește valoarea unui atribut al interogării pregătite, de exemplu tipul cursorului.
  • 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_fetch_field: Returnează informațiile despre următoarea coloană din rezultat: nume, tabel, tip, lungime.