PHP MySQLi num_rows Retourne Toujours 0
J'ai intégré une classe qui exploite les capacités de PHP intégré dans la classe MySQLi, et il est conçu pour simplifier l'interaction des bases de données. Cependant, en utilisant une approche de la programmation orientée objet, je vais avoir un moment difficile avec la num_rows variable d'instance de retourner le nombre correct de lignes après l'exécution d'une requête. Jetez un oeil à un instantané de ma classe...
class Database {
//Connect to the database, all goes well ...
//Run a basic query on the database
public function query($query) {
//Run a query on the database an make sure is executed successfully
try {
//$this->connection->query uses MySQLi's built-in query method, not this one
if ($result = $this->connection->query($query, MYSQLI_USE_RESULT)) {
return $result;
} else {
$error = debug_backtrace();
throw new Exception(/* A long error message is thrown here */);
}
} catch (Exception $e) {
$this->connection->close();
die($e->getMessage());
}
}
//More methods, nothing of interest ...
}
Voici un exemple d'utilisation:
$db = new Database();
$result = $db->query("SELECT * FROM `pages`"); //Contains at least one entry
echo $result->num_rows; //Returns "0"
exit;
Comment se fait-ce n'est pas précis? D'autres valeurs à partir d'objet de résultat sont exacts, tels que "field_count". Toute aide est grandement appréciée.
Je vous remercie pour votre temps.
OriginalL'auteur Oliver Spryn | 2011-06-30
Vous devez vous connecter pour publier un commentaire.
Bug Possible: http://www.php.net/manual/en/mysqli-result.num-rows.php#104630
Code est à partir de la source ci-dessus (Johan Abildskov):
Pourrait également valider avec le style Procédural:
Juste une remarque pour l'utilisation de MYSQLI_USE_RESULT: PHP mysql::query Si vous utilisez MYSQLI_USE_RESULT tous les appels suivants seront de retour d'erreur Commandes de synchronisation sauf si vous appelez mysqli_free_result()
OriginalL'auteur Phill Pafford
Cela pourrait être le comportement normal lorsque vous désactivez la mise en mémoire tampon des lignes de résultat avec MYSQLI_USE_RESULT
La désactivation de la mémoire tampon signifie que c'est à vous de les récupérer, de stocker et de COMPTER les lignes.
Vous devez utiliser l'indicateur par défaut
Équivalent de
OriginalL'auteur idragosalex
J'ai eu le même problème et trouvé la solution a été de mettre:
..après l'exécution de la requête $et avant
echo $result->num_rows;
OriginalL'auteur Alex