2016-03-28 2 views
0

Ich versuche, die Anzahl der Zeilen in einer Tabelle mit mysqli_num_rows anzuzeigen. Wenn ich die Ergebnisse drucke, sagt es, dass ich nur 1 Reihe habe, wenn ich wirklich mehrere Reihen habe.PHP - mysqli_num_rows - Ich sage nur 1 Zeile, wenn ich viele Zeilen habe

Wenn ich das SQL in phpMyAdmin getestet habe, zählt es die richtige Anzahl von Zeilen. Aber wenn ich die Ergebnisse auf meiner Webseite zeige, zählt es nur eine Zeile.

Bitte helfen Sie mir. Was mache ich falsch?

$mysqli = new mysqli("localhost", "myusername", "mypass", "mydatabase"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

if ($result = $mysqli->query("SELECT COUNT(*) FROM mytable")) { 

    /* determine number of rows result set */ 
    $row_cnt = $result->num_rows; 

    printf("Result set has %d rows.\n", $row_cnt); 

    /* close result set */ 
    $result->close(); 
} 

/* close connection */ 
$mysqli->close(); 

Die obigen Codes druckt die folgende, ganz gleich, wie viele Zeilen die ich habe:

Ergebnis Satz 1 Zeilen.

+5

die Count-Funktion entfernen. es ist das eine oder andere –

+2

Um auf den Kommentar von Fred näherzugehen, ist 'COUNT' eine von vielen Aggregatfunktionen, die an 'Gruppen' von Zeilen arbeiten. In Ihrer Abfrage werden alle Zeilen durch die Option "COUNT" automatisch in eine einzelne Zeile für die Gruppe zusammengefasst. Ihre Gruppe enthält in diesem Fall alle Zeilen. – noahnu

+0

Danke Jungs. Habe es funktioniert. – Brandon

Antwort

3

Das Ergebnis einer einfachen COUNT(*) Anweisung ist immer eine Zeile. Sie möchten diese Zeile abrufen und den Wert abrufen, der von der ersten Spalte zurückgegeben wird.

+0

* Nahm die Worte direkt aus meinem Mund * ;-) –

0

Sie könnten dies tun, wenn die Datenbank ich klein.

Mit einer großen Datenbank könnten Sie so wie in den Kommentaren erwähnt. Ich bin nicht so gut mit PDO oder objektorientierten Anfragen, so wird dies prozedural sein.

$conn = mysqli_connect($servername, $username, $password, $dbname); 

if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

$sql = "SELECT COUNT(*) FROM users"; 
$result = mysqli_query($conn, $sql); 

if(mysqli_num_rows($result)){ 
    $row = mysqli_fetch_row($result); 
    printf("Result set has %d rows.\n", $row[0]); 
} 

mysqli_close($conn); 
+4

Der Nachteil ist, dass du das ganze Recordset zurückbringst - wenn du den 'SELECT count (*)' reinlässt, gibst du eine Single zurück Reihe. Für kleinere Datenbanken gibt es kaum Unterschiede, aber wenn Sie ein paar Millionen Zeilen haben, ist es viel effizienter, dass die Datenbank die Summen für Sie erledigt. – andrewsi

+0

Danke. Das habe ich getan. Es ist eine kleine Datenbank. – Brandon

1

Eigentlich, wenn Sie COUNT verwenden, ist das Ergebnis der Abfrage ist die Anzahl der Zeilen. Ich versuche normalerweise, die SQL-Abfrage direkt auf phpmyadmin zu schreiben, was passiert. Es würde den Fehler offenbart;)

0
<?php 
    $mysqli = new mysqli("localhost", "myusername", "mypass", "mydatabase"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$sql="SELECT * FROM mytable"; 

if ($result=mysqli_query($con,$sql)) 
    { 
    // Return the number of rows in result set 
    $rowcount=mysqli_num_rows($result); 
    printf("Result set has %d rows.\n",$rowcount); 
    // Free result set 
    mysqli_free_result($result); 
    } 

mysqli_close($con); 
?> 

Verwenden mysqli_num_rows() Methode Anzahl der Reihen in dem Suchresultates zu holen.

Siehe Link http://php.net/manual/en/mysqli-result.num-rows.php

Verwandte Themen