sql >> Database >  >> RDS >> Mysql

mysqli voorbereide instructie num_rows retourneert 0 terwijl query groter is dan 0

Wanneer u een instructie uitvoert via mysqli, zijn de resultaten niet echt in PHP totdat u ze ophaalt - de resultaten worden vastgehouden door de DB-engine. Dus de mysqli_stmt object heeft geen manier om te weten hoeveel resultaten er onmiddellijk na uitvoering zijn.

Pas uw code als volgt aan:

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

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

Zie de handleiding

Dit is niet van toepassing op uw specifieke voorbeeld, maar als uw resultatenset groot is, $stmt->store_result() zal veel geheugen in beslag nemen. In dit geval, als je er alleen maar om geeft uit te zoeken of ten minste één resultaat is geretourneerd, sla de resultaten dan niet op; controleer in plaats daarvan of de metadata van het resultaat niet null is:

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

Zie de handleiding



  1. Hoe de grootste tabel in de MySQL-database te vinden?

  2. Hoe een back-up te maken en te herstellen (exporteren en importeren) MySQL-databases Zelfstudie

  3. Een tekstbestand lezen en inhoud overbrengen naar mysql-database

  4. Hoe in Java verbinding te maken als SYS met Oracle?