par
moogli » 18 sept. 2013, 23:01
salut,
pour te répondre je commence par te citer la doc de
la méthode rowCount()
retourne le nombre de lignes affectées par la dernière requête DELETE, INSERT ou UPDATE exécutée par l'objet PDOStatement correspondant.
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.
Donc c'est assez clair à ne pas utiliser avec un select si tu n'est pas sur que le SGBD fournisse la donnée
Quand a utiliser fetchColumn c'est une utilisation détournée du fait que cette fonction retournera false s'il n'y a pas de données.
De plus quitte a faire une requête SQL autant faire count pour savoir si la donnée est déjà présente.
par exemple :
select count(1) as nb from latable where lechampAtester='la valeur a tester'
et tu test si nb == 0 c'est que la donnée n'est pas dans la table.
J'ai vu plus crade que l'utilisation du fetch, comme utiliser le mécanisme d'exception en executant l'insert (il faut qu'il y ai une contrainte unique sur la colonne ne pouvant être en double) et si la donnée est présente => exeption donc message d'erreur indiquant le doublon

(c'est quand même crado hein

).
Perso je préfère le count() plutot que des requêtes qui récupère des données inutiles.
@+
En dehors