Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysqli подготвеният израз num_rows връща 0, докато заявката връща по-голямо от 0

Когато изпълнявате изявление чрез mysqli, резултатите всъщност не са в PHP, докато не ги извлечете - резултатите се съхраняват от DB двигателя. Така че mysqli_stmt object няма начин да знае колко резултата има веднага след изпълнението.

Променете кода си така:

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

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

Вижте ръководството

Това не се отнася за вашия конкретен пример, но ако вашият набор от резултати е голям, $stmt->store_result() ще консумира много памет. В този случай, ако всичко, което ви интересува, е да разберете дали е върнат поне един резултат, не съхранявайте резултатите; вместо това просто проверете дали метаданните за резултата не са нулеви:

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

Вижте ръководството



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Може ли външен ключ да препраща към неуникален индекс?

  2. 1130 Хостът 'amazon-ec2-ip' няма право да се свързва с този MySQL сървър

  3. Програмно актуализиране на поръчките в Woocommerce

  4. MySQL/Python -> Грешен синтаксис за Placeholder в изявления?

  5. Как да коригирате java.sql.SQLException:Колона „id“ не е намерена. грешка в Spring Boot