Mysql-num-rows en pdo

Résolu
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   -  
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis sur le développement de la v2 d'un script avant j'utilisai les fonction mysql mais je souhaiterai les remplace par pdo, mais je doit gardé mysql a coté de sa pour que les utilisateur de mon script puisse choisir pour me facilité le codage j'utilise des objet pour traité les requête pour pas encombré mon code avec des if a chaque requête.

donc dans mon objet a la fonction _construct je défini les information sur la bdd et c'est a la fonction connect que le type de requête a utilisé est défini.

donc pour la fonction count j'ai donc mysql_num_rows pour mysql et pdo pour le moment je n'ai qu'une fonction bricolé moi même

12 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut.

La classe PDOStatement te fournis la méthode rowCount() pour compter le nombre de résultats affectés.
https://www.php.net/manual/fr/pdostatement.rowcount.php
2
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
Je sais bien mais sa ne marche pas avec les select je ne veut pas faire 2 requête une avec count et l'autre normal pour que sa ne prenne pas des ressource inutilement
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Ça fonctionne aussi un avec « SELECT ».
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
oui mais c'est pas tellement ce que je veut pour sa :

Citation de la doc php :
Si la dernière requête SQL exécutée par l'objet PDOStatement associé est une requête de type SELECT, quelques bases de données retourneront le nombre de lignes retournées par cette requête. Néanmoins, ce comportement n'est pas garanti pour toutes les bases de données et ne devrait pas être exécuté pour des applications portables.

La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sais pourquoi.
Ici nous avons réuni théorie et pratique: rien ne fonctionne .... et personne ne sais pourquoi (A. Einstein).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Ça fonctionne avec MySQL.
Mais le mieux est de le faire en deux requêtes, que ce soit avec les fonctions mysql_ ou PDO.
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
pourquoi ?

En théorie sa consomme plus de ressource vu que 2 requête sont exécuté au lieux de 1

La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sais pourquoi.
Ici nous avons réuni théorie et pratique: rien ne fonctionne .... et personne ne sais pourquoi (A. Einstein).
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Parce que, comme tu l'as cité, ça ne fonctionne pas avec tous les SGBD.
Il y a une fonction mysql_num_rows() car MySQL supporte cette fonction, mais ce n'est pas le cas de tous (Firebird/InterBase n'ont pas cette fonctionnalité, par exemple).
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
ok donc le mieux c'est de faire une requête normal et l'autre avec count()
0
graffx Messages postés 6506 Date d'inscription   Statut Contributeur Dernière intervention   1 975
 
En théorie sa consomme plus de ressource vu que 2 requête sont exécuté au lieux de 1

J' ai envie de dire faux! Comem d' habitude Avion à raison, tu peux lui faire confiance, il m' a beaucoup aidé, ce ptit génie :)
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
Même si j'ai de l'expérience je préfère quand même me renseigné car je développe pour des client donc je préfère que sa soit bien optimisé

Sinon le quel des deux est le mieux ?
faire une requête normal + une requête count()
ou faire une requête normal avec un script qui compte

Merci d'avance
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Il vaut mieux faire deux requêtes SQL.
Ça consommera un peu plus de ressources, mais ça rendra ton script plus portable. De toutes façons, une requête de plus ou de moins, la différence ne sera pas supérieure à quelques millisecondes.

PDOStatement->rowCount() doit plutôt être utilisé pour compter le nombre de lignes affectées (c'est-à-dire modifiées ou supprimées). Dans ce cas, je pense que ça fonctionne avec tous les SGBD.
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
d'accord merci pour ton aide
0