2017-09-27 4 views
-1

Je suppose que affected_row s renvoie le nombre de lignes affectées dans la dernière requête (par exemple UPDATE) et num_rows le nombre de lignes dans un jeu de résultats (par exemple un SELECT).Quelles sont les fonctions équivalentes mysqli :: afftected_rows et mysqli_result :: num_rows dans PHP PDO?

Que devrais-je utiliser dans PDO?

PDOStatement::rowCount renvoie le nombre de lignes affectées dans cette instruction, mais pour la plupart des bases de données ne renvoie pas le nombre de lignes affectées par SELECT.

Répondre

0

Il est mentionné dans official documentation

Si la dernière instruction SQL exécutée par le PDOStatement associé était une instruction SELECT, certaines bases de données peuvent retourner le nombre de lignes retourné par cette déclaration. Toutefois, ce comportement n'est pas garanti pour toutes les bases de données et ne doit pas être invoqué pour les applications portatives .

Nombre de lignes trouvées peut être forcée par préfixer SQL_CALC_FOUND_ROWS comme indiqué dans la documentation MySQL pour FOUND_ROWS

Il est déjà lié related answer par Paul Dixon expliquant quelques détails

+0

Je n'ai que la déclaration après l'exécution. – TheDeveloper

+1

@TheDeveloper mais vous pouvez exécuter 'FOUND_ROWS()' après – rkosegi

0

équivalent de affected_rows: rowCount() http://php.net/manual/de/pdostatement.rowcount.php

Si vous voulez que le nombre de lignes d'une sélection, effectuer un comptage().

également comme référence: PHP PDO - Num Rows

+0

Je ne peux pas y compter le nombre (*) si le L'instruction est déjà exécutée. J'écris un wrapper pour PDO et j'ai besoin de la fonction "numRows" en passant une instruction en entrée. – TheDeveloper

+1

@TheDeveloper vous n'en avez pas besoin. cette fonction est inutile. –

+0

Il est utile si j'ai une classe "Storage" qui est un singleton et peut stocker dans une base de données (elle utilisera donc PDO) mais peut stocker dans un fichier (donc il utilisera des fichiers) et ainsi de suite. L'utilisateur utilise ma classe et n'appelle que "save/load" et j'utiliserai PDO/File/other en fonction de ce que j'utilise. – TheDeveloper