Frage

Ich habe eine Datenbank-Handler-Klasse in PHP Schreiben der mysqli Klasse und Prepared Statements. Ich versuche, das Ergebnis auszudrucken. Es funktionierte nicht auf Anhieb so entschied ich mich einige Debug zu tun. Ich versuchte, die num_rows() Methode aus der mysqli_statement Klasse zu verwenden, aber es hielt 0. Rückkehr habe ich beschlossen, einen kleinen Teil des Testcode zu schreiben, es zu halten einfacher, damit ich sehen konnte, was falsch lief. Ich war dann in der Lage, die Daten zurückgeben wollte ich, aber die num_rows() Methode gibt immer noch 0, selbst wenn es tatsächlich ist die Auswahl und einige Daten abruft. Hier ist der Code:

$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if(mysqli_connect_errno())
{
  die('connection failed');
}

$statement = $mysqli->stmt_init();

$query = "SELECT name FROM table WHERE id = '2000'";
if($statement->prepare($query))
{
    $statement->execute();
    $statement->bind_result($name);
    $statement->fetch();
    $statement->store_result();
    echo $statement->num_rows();
    echo $name; 
}
else
{
    echo 'prepare statement failed';
    exit();
}

Also ja, erwartetes Ergebnis ist:

1name

Und tatsächliches Ergebnis ist:

0name

Kann mir jemand sagen, warum das so ist?

War es hilfreich?

Lösung

Ich frage mich, ob num_rows () ist relativ zum aktuellen resultset berichten. Versuchen Sie erfassen num_rows () vor, um die Daten zu holen. z.

if($statement->prepare($query))
{
    $statement->execute();
    $statement->store_result();
    echo $statement->num_rows();
    $statement->bind_result($name);
    $statement->fetch();
    echo $name; 
}

Hat das irgendeine Wirkung?

Andere Tipps

num_rows ist keine Methode, es ist eine Eigenschaft.

Es sieht nicht wie Sie $ name deklariert haben.

Versuchen Sie auch, bind_result Entfernen () und fetch () so liest es so etwas wie folgt aus:

$statement->execute();

$statement->store_result();

printf("Number of rows: %d.\n", $statement->num_rows);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top