2013-05-24 23 views
9

Ich lerne über vorbereitete Anweisungen und versuche, mit einer Abfrage zu arbeiten, die mehrere Zeilen mit Ergebnissen liefert. Gerade jetzt versuche ich herauszufinden, wie man die Anzahl der Zeilen ermittelt und dann diese Zahl im HTML-Code anzeigt.Vorbereitete Anweisungen - Anzahl der Zeilen

Meine vorbereitete Anweisung sieht wie folgt aus:

if($stmt = $mysqli -> prepare("SELECT field1, field2, field3 FROM table WHERE id= ?ORDER BY id ASC")) 
    { 
    /* Bind parameters, s - string, b - blob, i - int, etc */ 
    $stmt -> bind_param("i", $id); 
    $stmt -> execute(); 

    /* Bind results */ 
    $stmt -> bind_result($testfield1, $testfield2, $testfield3); 

    /* Fetch the value */ 
    $stmt -> fetch(); 

    /* Close statement */ 
    $stmt -> close(); 
    } 

Ich verstehe, dass ich soll zuerst die Ergebnisse speichern, dann num_rows verwenden, wie folgt aus:

$stmt->store_result(); 
$stmt->num_rows; 

Aber ich bin läuft und gibt die Seite aus, wenn ich den Code hineinlege. Ich bin nicht einmal in der Lage gewesen, zum nächsten Schritt zu gelangen, wie man die Anzahl der Zeilen anzeigt

Also, die Frage ist: Was fehlt mir in Bezug auf die Berechnung der Anzahl der Zeilen in der vorbereiteten Anweisung, dann wie würde ich es mit einem <?php echo '# rows: '.$WHATGOESHERE;?> anzeigen

Danke !!

Antwort

12

num_rows gibt die Nummer zurück, die Sie in einer Variablen speichern müssen.

/*.....other code...*/ 
$numberofrows = $stmt->num_rows; 
/*.....other code...*/ 

echo '# rows: '.$numberofrows; 

So voll Code sollte wie folgt sein:

if($stmt = $mysqli -> prepare("SELECT field1, field2, field3 FROM table WHERE id= ? ORDER BY id ASC")) 
    { 
    /* Bind parameters, s - string, b - blob, i - int, etc */ 
    $stmt -> bind_param("i", $id); 
    $stmt -> execute(); 

    /* Bind results */ 
    $stmt -> bind_result($testfield1, $testfield2, $testfield3); 

    /* Fetch the value */ 
    $stmt -> fetch(); 
    $numberofrows = $stmt->num_rows; 

    /* Close statement */ 
    $stmt -> close(); 
    } 
echo '# rows: '.$numberofrows; 
+0

Wo es in der vorbereiteten Anweisung geht ich gepostet? Nach dem Ausführen()? Nach bind_result, oder holen? Ist es wichtig? – Kevin

+0

@Kevin Ich glaube nicht. Stellen Sie sicher, dass es nach Ausführen ausgeführt wird und es sollte in Ordnung sein –

+0

Oh und nebenbei vergessen Sie ein Leerzeichen zwischen dem '?' Und 'ORDER BY'. Ich werde meine Antwort aktualisieren, um das zu beheben –

-2

Schauen Sie sich das Beispiel # 2 hier: PHP.net

Verwendung PDO :: query() eine SELECT COUNT (*) Anweisung mit denselben Prädikaten wie beabsichtigten SELECT-Anweisung zu erteilen, dann PDOStatement verwenden: : fetchColumn() zum Abrufen der Anzahl der Zeilen, die zurückgegeben werden. Ihre Anwendung kann dann die richtige Aktion ausführen.

Verwandte Themen