OVH Cloud OVH Cloud

[PHP+MySQL] Cardinalité d'un tableau SQL

2 réponses
Avatar
Denis Beauregard
Bonjour,

Ça y est, je me suis mis sérieusement au PHP et j'ai même acheté
un bouquin pour l'apprendre PHP & MySQL chez CampusPress.

À force de tatonnements, j'ai fini par découvrir que je devrais
obtenir le nombre de lignes dans une table avec

$res = mysql_query("SHOW index FROM `wlivres`");
$nb_livres = $res.cardinality;

Avec myphpadmin, la commande SHOW produit bien comme résultat
un array dont la variable cardinality est le nombre de rangées
dans la table. Mais, quand j'essaie de l'appliquer dans la vraie
vie, j'arrive à rien. De plus, je vois un comportement bizarre
dans mon code que je résume ici.

Je peux voir le contenu d'une variable dans un tableau, donc la
partie connexion avec la BD fonctionne bien.

<?
include_once(****);
...

$res = mysql_query("SHOW index FROM `wlivres`");
$nb_livres = $res.cardinality;
echo "<H1>Parmi [". $nb_livres. "] livres</H1>";

?>

Avec myphpadmin, cela fonctionne. En PHP, j'ai fait quelques
tests.

SHOW index FROM wlivres
Parmi [Resource id #3cardinality] livres
SHOW index FROM `wlivres`
Parmi [Resource id #3cardinality] livres
SHOW index FROM `wlivres.cote`
Parmi [cardinality] livres

C'est comme si en PHP, les arguments ne passaient pas alors que
directement avec phpadmin, je lis bien le nombre de lignes parmi
un certain nombre de valeurs.

SHOW index FROM wlivres
donne un résultat mais pas les autres requêtes.


J'hésite beaucoup à faire un SELECT seulement pour savoir le nombre de
lignes dans un tableau...


Denis

2 réponses

Avatar
Bruno Desthuilliers
Denis Beauregard wrote:
Bonjour,

Ça y est, je me suis mis sérieusement au PHP et j'ai même acheté
un bouquin pour l'apprendre PHP & MySQL chez CampusPress.

À force de tatonnements, j'ai fini par découvrir que je devrais
obtenir le nombre de lignes dans une table avec

$res = mysql_query("SHOW index FROM `wlivres`");
$nb_livres = $res.cardinality;



(snip)

SHOW index FROM wlivres
donne un résultat mais pas les autres requêtes.


J'hésite beaucoup à faire un SELECT seulement pour savoir le nombre de
lignes dans un tableau...




select sum(wlivres.idLivre) as nbLivres from wlivres;

BTW, cette question serait plus à sa place sur f.c.l.php.

Bruno
Avatar
Yann Marigo
On Tue, 04 Nov 2003 10:56:01 +0100
laurent prevosto wrote:

Jeremie Bouillon wrote:

> De Denis Beauregard , in
> :
>
>
>>Dans les 2 derniers cas, je pense qu'il n'est
>>pas très élégant de lire 1 million de lignes pour rien, alors que
>l'on>n'a besoin que de la longueur du tableau.
>
> D'après ce que j'ai vu ici et là, il n'y a pas plus rapide qu'un
> simple$nbr = mysql_result(mysql_query("SELECT COUNT(id) FROM
> yourtable"),0);
>
> mais bon je suis pas un expert.

Ca fait des dizaines d'années que l'on fait
select count(*) from table
pourquoi faudrait-il changer ?



un select count(id) from table serait, je pense, plus rapide grâce à
l'index


--
@+ Yann Marigo
Dernier mini_howto: "Ajouter le support ext3 à son noyau 2.2.2x" :
http://www.geekounet.org/docs/ext3_2.2_kernel_mini_howto.html
Article en Free Documentation Licence biensûr ! ;-)