compter un résultat avec PDO

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : compter un résultat avec PDO

par x@v » 16 févr. 2008, 18:00

j'ai essayer
$sql = "SELECT * FROM client where nom='Rasmus'";
$con->query($sql);
echo count($con).'<br />';
foreach ($con->query($sql) as $row)
{
    echo $row['nom'] . " - " . $row['prenom'] . "<br />";
}
ça me renvoie

Code : Tout sélectionner

1 Rasmus - Lerdorf Rasmus - Lerdorf Rasmus - Lerdorf Rasmus - Lerdorf Rasmus - Lerdorf Rasmus - Lerdorf Rasmus - Lerdorf Rasmus - Lerdorf Rasmus - Lerdorf Rasmus - Lerdorf Rasmus - Lerdorf
Pour les query() et exec()
http://www.phpteam.net//content/view/71/1/1/1/
ce tutoriel qui fonctionne ne montre que query pour des mises à jours...

par Berzemus » 16 févr. 2008, 13:57

je suis passé devant...:/
Sa oblige à faire une requete supplémentaire, merci.
curieusement il font des foreach pour afficher les lignes !
j'avais lut que obj->query & obj->exec sont utilisez differement mais un obj->query suffit pour tout faire ?
c'est l'avantage des data objects, ils peuvent être traités directement comme des tableaux.
J'ai pas essayé, mais simplement faire un count() dessus, ça pourrait se faire..

Sinon, query et exec sont différents. Le premier s'utilise si tu veux retourner des infos (select), et le second si tu veux juste exécuter une requêtes (create, update, insert,..)

par x@v » 16 févr. 2008, 02:00

je suis passé devant...:/
Sa oblige à faire une requete supplémentaire, merci.
curieusement il font des foreach pour afficher les lignes !
j'avais lut que obj->query & obj->exec sont utilisez differement mais un obj->query suffit pour tout faire ?

par Jules Petibidon » 16 févr. 2008, 01:12

Le problème étant qu'il n'y a pas d'équivalent PDO de mysql_num_rows() :)

Comme PDO effectue par défaut des requêtes non cachées (unbuffered pour préciser au cas où) il est impossible de compter les résultats.

Il existe par contre un équivalent de mysql_affected_rows(), ce qui dans le cas présent ne répond pas au problème, mais ils y expliquent comment gérer la question avec les requetes SELECT :

http://fr3.php.net/manual/fr/function.P ... wCount.php

par Truc » 16 févr. 2008, 00:31

Il y a beaucoup d'infos dans la doc tu y trouveras une liste de méthodes :)

compter un résultat avec PDO

par x@v » 15 févr. 2008, 23:54

Bonjour,
c'est surrement tout bête, mais je cherche une fonction qui pourrait remplacer
mysql_num_rows();
avec PDO elle ne fonctionne pas.
if(mysql_num_rows($resultats) == 0)
		{
			echo '<img src="admin/img_admin/rating_star.png" />&nbsp;<span class="red">aucun résultat trouvé, recommencer</span>';
			exit();
		}
		else if(mysql_num_rows($resultats) == 1)
		{
			echo '<div class="titreResultatRecherche">';
			echo 'Nous avons trouvez 1 résultat<br />';
			echo '<div>';
		}
		else
		{
			echo '<div class="titreResultatRecherche">';
			echo 'Nous avons trouvez '.mysql_num_rows($resultats).' résultat<br />';
			echo '<div>';
		}
Merci