Ce face mysqli_stmt_sqlstate
SQLSTATE este un cod standard, comun mai multor sisteme de baze de date: 23000 încălcarea unei reguli de integritate (duplicat, NULL interzis), 42S02 tabel inexistent, 42000 eroare de sintaxă. 00000 înseamnă fără eroare.
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ă. |
Ce returnează
Codul SQLSTATE.
Exemple
Exemplul 1: Clasa erorii
<?php
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect("localhost", "ana", "parola_ta", "magazin");
$stmt = mysqli_prepare($conn, "INSERT INTO produse (nume, pret, stoc) VALUES (?, 100, 1)");
$nume = "Cablu";
mysqli_stmt_bind_param($stmt, "s", $nume);
mysqli_stmt_execute($stmt);
echo mysqli_stmt_sqlstate($stmt) . "\n";
$nume = null;
mysqli_stmt_execute($stmt);
echo mysqli_stmt_sqlstate($stmt);
Rezultat (cu un server MySQL și tabelul produse de mai sus)
00000
23000
Greșeli frecvente
- Compari SQLSTATE ca număr. Codul este text și poate conține litere (
42S02); compară cu===între texte.
Comenzi înrudite
mysqli_stmt_errno: Returnează codul ultimei erori a unei interogări pregătite (0 dacă nu a fost eroare).mysqli_sqlstate: Returnează codul SQLSTATE (5 caractere) al ultimei erori de pe conexiune.