Eviter un COUNT avant un SELECT

Eléphant du PHP | 172 Messages

30 août 2006, 14:39

Bonjour,

Encore une question, j'arrête pas je sais :P

J'aimerais éviter un COUNT dans une table, avant un SELECT.
C'est un peu une requête inutile.

Par exemple, pour les messages lus/nonlus d'un forum.

Le futur membre s'inscrit et affiche l'index du forum, si je ne fait pas un COUNT avant de sélectionner les sujets lus ayant pour id celui du nouveau membre, je me retrouve avec une erreur puisque ce membre n'a encore lu aucun sujet, logique puisque le SELECT ne retourne aucun résultat.

Donc, y'a t-il une astuce, à part cacher les messages d'erreurs qui puisse me faire sélectionner dans la table seulement si au moins une ligne existe, du même genre que IF EXISTS pour un DROP, CREATE table ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 août 2006, 16:00

if (mysql_num_rows() > 0) {
  // afficher messages
} else {
  echo 'Aucun messages';
}

Invité
Invité n'ayant pas de compte PHPfrance

30 août 2006, 16:58

Merci, mais mysql_num_rows() ne m'est pas utile, puisque c'est une erreur lors de la requête.

SELECT a FROM b WHERE c=x

Si x n'est pas présent dans la colonne c, j'obtiens une erreur dans ma requête.

Donc pour éviter ça, je suis obligé de faire un COUNT préalable, ma question était de comment éviter cette prérequête.

ViPHP
ViPHP | 2144 Messages

30 août 2006, 17:02


Si x n'est pas présent dans la colonne c, j'obtiens une erreur dans ma requête.
Tu obtiens un résultat vide, pas une erreur. et donc mysql_num_rows() te reverra 0

Invité
Invité n'ayant pas de compte PHPfrance

30 août 2006, 17:09

Ben si, j'obtiens une erreur, sinon, je n'aurais pas posée cette question.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 août 2006, 17:28

Ben si, j'obtiens une erreur, sinon, je n'aurais pas posée cette question.
Une requête à le droit de ne renvoyer aucun résultat.

Tu as posté 2 messages en parlant de cette erreur et il ne te viendrait pas à l'esprit de nous la donner par hasard ? :roll:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 août 2006, 17:29

1/ affiche nous l'erreur

2/ je suis de l'avis de mes collègues, ton erreur doit venir d'un mysql_fetc_... après son exécution.
Un select qui ne retourne aucune ligne ne déclenche pas une erreur ... :roll:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer