mysqli_real_query în PHP

Trimite o interogare fără să preia rezultatul; îl iei apoi cu mysqli_store_result sau mysqli_use_result.

Sintaxă
mysqli_real_query(mysqli $mysql, string $query): bool

Ce face mysqli_real_query

mysqli_query este de fapt mysqli_real_query urmat de mysqli_store_result. Varianta separată îți lasă alegerea între rezultat bufferizat (mysqli_store_result) și nebufferizat (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
$mysql Conexiunea.
$query Comanda SQL.

Ce returnează

true la succes.

Exemple

Exemplul 1: Trimitere și preluare separate

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

var_dump(mysqli_real_query($conn, "SELECT AVG(pret) FROM produse"));
echo "Coloane în rezultat: " . mysqli_field_count($conn) . "\n";
echo "Preț mediu: " . mysqli_fetch_row(mysqli_store_result($conn))[0];

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

bool(true)
Coloane în rezultat: 1
Preț mediu: 1082.5000

Greșeli frecvente

  • Apelezi mysqli_real_query și apoi mysqli_fetch_assoc direct pe conexiune. Ai nevoie întâi de rezultat, de la mysqli_store_result sau mysqli_use_result.

Comenzi înrudite

  • mysqli_store_result: Aduce în memorie tot rezultatul ultimei interogări trimise cu mysqli_real_query sau mysqli_multi_query.
  • mysqli_use_result: Pornește citirea rezultatului rând cu rând, direct de pe server, fără să îl aducă tot în memorie.
  • mysqli_query: Trimite o interogare SQL către baza de date. Pentru SELECT returnează un rezultat din care citești rândurile.