Il y a quelque temps, je cherchais avec SQLite, essayant de porter certains de mes sites pour l'utiliser au lieu de MySQL. Je me suis accroché à l'absence d'une fonction pour compter les résultats, comme mysql_num_rows()
de PHP. Après avoir cherché un peu, j'ai découvert this mail list, qui dit (si je comprends bien) que SQLite n'a pas cette fonctionnalité, car il est inefficace. Il indique que c'est une mauvaise forme d'écrire du code qui a besoin de savoir combien de lignes sont retournées.mysql_num_rows est-il efficace et/ou standard?
J'utilise généralement mysql_num_rows
pour vérifier les résultats de retour vides. Par exemple:
$query = "SELECT * FROM table WHERE thing = 'whatever'";
$results = mysql_query($query);
if (mysql_num_rows($results)) {
while ($row = mysql_fetch_array($results)) {
echo "<p>$row[whatever]</p>";
}
} else {
echo "<p>No results found</p>";
}
Le dégoût véhémente pour le concept de mysql_num_rows()
dans la communauté SQLite me demande si elle est terriblement efficace pour que MySQL régulière en PHP.
Existe-t-il un moyen mieux accepté de vérifier la taille d'un ensemble de résultats MySQL en PHP en plus de mysql_num_rows()
?
EDIT: Je n'utilise pas simplement mysql_num_rows
pour obtenir le nombre - j'utiliserais une requête COUNT
pour cela. Je l'utilise pour vérifier s'il y a des résultats avant de tout sortir. C'est utile pour quelque chose comme l'affichage des résultats de recherche - il n'est pas toujours garanti qu'il y aura des résultats. Dans le monde SQLite, je dois envoyer une requête COUNT
, vérifier s'il y a quelque chose, puis envoyer une requête SELECT
pour obtenir tout.
excellent - Je ne savais pas le faux retour de mysql_query. – Andrew
Oui. C'est pourquoi le truc while ($ row = ...) fonctionne. –