Pour afficher mes résultats de PDO, j'utilise toujours le code PHP suivant par exemple:PDO SQL problème affichant plusieurs lignes lorsque vous utilisez COUNT()
$STH = $DBH->prepare("SELECT logo_id, guess_count, guessed, count(id) AS counter FROM guess WHERE user_id=:id");
$STH->bindParam(":id",$loginuser['id']);
$STH->execute();
while($row = $STH->fetch()){
print_r($row);
}
Maintenant, le problème est que je reçois un seul résultat. J'avais l'habitude d'utiliser $STH->rowCount()
pour vérifier le nombre de lignes retournées, mais cette méthode n'est pas vraiment conseillée pour les instructions SELECT
car dans certaines bases de données il ne réagit pas correctement. J'ai donc utilisé le count(id) AS counter
, mais maintenant je n'ai qu'un seul résultat à chaque fois, même si la valeur de $row['counter']
est supérieure à un.
Quelle est la manière correcte de compter le nombre de résultats dans une requête?
Si je comprends bien, pas vraiment de bonne solution.Le premier n'est pas conseillé pour les grandes bases de données, le second nécessite une requête supplémentaire et le dernier, je veux vérifier le nombre de résultats ** avant ** de faire mes trucs avec les résultats individuels puisque ce sont d'autres requêtes. – jdepypere
Si vous avez besoin d'un ** nombre exact ** du nombre de lignes qui satisfont un prédicat particulier AVANT d'exécuter une requête pour renvoyer les lignes, la requête COUNT (1) séparée est probablement l'approche la plus appropriée. Oui, c'est un code supplémentaire dans votre application; Je vous recommande de préfacer le code avec un commentaire qui indique le but du code ... pour obtenir un nombre exact de lignes qui satisfont un ensemble de prédicats, avant d'exécuter une requête qui récupérera les lignes. – spencer7593
En supposant que c'est mysql, il y a une autre option: [PDOStatement :: rowCount] (http://www.php.net/manual/fr/pdostatement.rowcount.php) – Mike