Når du udfører en sætning gennem mysqli, er resultaterne faktisk ikke i PHP, før du henter dem -- resultaterne holdes af DB-motoren. Så mysqli_stmt
objekt har ingen måde at vide, hvor mange resultater der er umiddelbart efter udførelse.
Rediger din kode sådan:
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// now you can check $stmt->num_rows;
Dette gælder ikke for dit specifikke eksempel, men hvis dit resultatsæt er stort, $stmt->store_result()
vil forbruge meget hukommelse. I dette tilfælde, hvis det eneste, du bekymrer dig om, er at finde ud af, om mindst ét resultat blev returneret, skal du ikke gemme resultater. i stedet skal du bare kontrollere, om resultatets metadata ikke er null:
$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;