
Envoyé par
Benjamin Delespierre
De toute façon tu t'en fiche pas mal du type de tes variables, PHP est typé faible:
1 2 3
|
$a = 1 + 1.0 + "1" + "1.0"
echo $a; // 4 |
Je sais pas si c'est un bon conseil. C'est autant une des forces qu'une des faiblesse du php. Si une erreur survient dans sa requête, rien n'est contrôlé ici (ni les erreurs, ni le type de retour), tu recevras un booléen (false) qui avec ton caste en int donnera 0... bof bof.

Envoyé par
transgohan
@Shikiryu
Ce serait tout de même bien moins performant. Dans le cas d'une table contenant un million de n-uplet tu les chargeraient tous en mémoire, alors qu'une requête count faite en SQL ne ferrai que les parcourir et les compter sans les charger en mémoire (puisqu'aucun retour n'est demandé de ces n-uplets).
Tout dépend du use-case (ici non indiqué). Souvent, quand on veut connaitre le nombre de lignes d'un SELECT, on veut aussi une liste d'éléments.
Puis, si cette requête est souvent appelée, même avec un count(*), elle sera laborieuse. Dans ce cadre là, je passerai par un cache de la requête ou par une vue statistique.
Mais quoi qu'il arrive, je viens de bien relire le manuel et quelque chose me semblant acquis est erroné : Il faut éviter d'utiliser rowCount() dans les requêtes type SELECT (dixit http://www.php.net/manual/fr/pdostatement.rowcount.php)
Il est beaucoup plus utile dans le cadre d'un UPDATE / INSERT / DELETE pour connaitre le nombre de lignes affectées par la dernière requête. (et donc faire des vérifications sécuritaires ou de l'affichage)
Enfin, quoi qu'il arrive même si
$result = (int)$stmt->fetch(PDO::FETCH_ASSOC);
fonctionne, il serait judicieux de vérifier d'abord si execute() ne retourne pas d'erreur (et la même pour le fetch())
Partager