sql >> Databasteknik >  >> RDS >> Mysql

mysqli förberedd sats num_rows returnerar 0 medan frågan returnerar större än 0

När du kör en sats via mysqli finns resultaten inte i PHP förrän du hämtar dem -- resultaten hålls av DB-motorn. Så mysqli_stmt objekt har inget sätt att veta hur många resultat det finns omedelbart efter exekvering.

Ändra din kod så här:

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

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

Se manualen

Detta gäller inte för ditt specifika exempel, men om din resultatuppsättning är stor, $stmt->store_result() kommer att förbruka mycket minne. I det här fallet, om allt du bryr dig om är att ta reda på om minst ett resultat returnerades, spara inte resultat; istället kontrollera bara om resultatets metadata inte är null:

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

Se manualen



  1. hur man får laddningstid i millisekunder eller mikrosekunder i mysql

  2. Lagring av binära datatyper i SQL Server

  3. android.content.res.Resources$NotFoundException:String resurs ID #0x2 Database

  4. Ändra tidszonförskjutningen på ett datumtidsförskjutningsvärde i SQL Server (T-SQL)