mysqli_stmt_get_warnings în PHP

mysqli avansat PHP 5.1+

Returnează avertismentele generate de o interogare pregătită, ca obiect mysqli_warning.

Sintaxă
mysqli_stmt_get_warnings(mysqli_stmt $statement): mysqli_warning|false

Ce face mysqli_stmt_get_warnings

Unele probleme nu opresc interogarea, ci produc doar un avertisment (de exemplu împărțirea la zero într-un SELECT). Obiectul mysqli_warning are proprietățile message, errno și sqlstate, iar metoda next() trece la următorul avertisment.

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ă și executată.

Ce returnează

Un obiect mysqli_warning sau false dacă nu sunt avertismente.

Exemple

Exemplul 1: Împărțire la zero

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

$stmt = mysqli_prepare($conn, "SELECT pret / ? FROM produse WHERE id = 1");
$impartitor = 0;
mysqli_stmt_bind_param($stmt, "i", $impartitor);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);

$avertisment = mysqli_stmt_get_warnings($stmt);
if ($avertisment) {
    echo "Avertisment $avertisment->errno: $avertisment->message";
}

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

Avertisment 1365: Division by 0

Greșeli frecvente

  • Citești avertismentele înainte de mysqli_stmt_store_result sau înainte să citești rândurile. Conexiunea este ocupată și primești Commands out of sync.

Comenzi înrudite

  • mysqli_get_warnings: Returnează avertismentele ultimei interogări ca obiect mysqli_warning, pe care îl parcurgi cu next().
  • mysqli_warning_count: Returnează numărul de avertismente generate de ultima interogare pe conexiune.
  • mysqli_stmt_error_list: Returnează lista erorilor ultimei operații a unei interogări pregătite, cu cod, SQLSTATE și mesaj.