Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysqli przygotowana instrukcja num_rows zwraca 0, podczas gdy zapytanie zwraca więcej niż 0

Kiedy wykonujesz instrukcję przez mysqli, wyniki nie są w rzeczywistości w PHP, dopóki ich nie pobierzesz - wyniki są przechowywane przez silnik DB. Więc mysqli_stmt obiekt nie ma możliwości sprawdzenia, ile jest wyników natychmiast po wykonaniu.

Zmodyfikuj swój kod w ten sposób:

$stmt->execute();
$stmt->store_result(); // pull results into PHP memory

// now you can check $stmt->num_rows;

Zobacz instrukcję

Nie dotyczy to konkretnego przykładu, ale jeśli zestaw wyników jest duży, $stmt->store_result() zużyje dużo pamięci. W takim przypadku, jeśli zależy Ci tylko na ustaleniu, czy przynajmniej jeden wynik został zwrócony, nie przechowuj wyników; zamiast tego po prostu sprawdź, czy metadane wyników nie są puste:

$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;

Zobacz instrukcję



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak korzystać z Coalesce w MySQL

  2. Wykrywanie zakleszczeń MySQL przez PHP

  3. Automatyczne inkrementowanie mysql ID nie zaczyna się od 0

  4. Kolejność SQL według liczby

  5. cc1:błąd:nierozpoznana opcja wiersza poleceń -Wno-null-conversion podczas instalacji python-mysql na mac 10.7.5