PHP My Sql SELECT

Signaler
Messages postés
44
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
24 mars 2006
-
Messages postés
44
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
24 mars 2006
-
Bonjour à tous.

Je voudrais interroger une base de données pour vérifier l'existence d'une information, tout en ne sachant pas si elle existe.

En local, ce script fonctionne
$query ='(SELECT idClient FROM clients WHERE mailClient ="'.$email.'")';


$result=mysql_query($query,$connexion)or die("Erreur interne : connexion au serveur BD refusée SELECT");
$ligne=mysql_fetch_row($result);

if ($idClient==0){......}

Mais pas sur le serveur!

Quelle astuce dois je utiliser?

Merci d'avance.

8 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,



A mon avis tu as de tres mauvaises habitudes de programmation... :

$ligne=mysql_fetch_row($result);

if ($ligne[0] == 0){......}



Ou mieux a mon sens, si tu veux juste savoir si l'info existe :

$nbr = mysql_num_rows ($result);

if ($nbr === 0) { ... }
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
" Ou mieux a mon sens, si tu veux juste savoir si l'info existe :

$nbr = mysql_num_rows ($result);

if ($nbr === 0) { ... }"

Autant faire directement : if ( mysql_num_rows($result) === 0 ) {...}. Ca t'évite de créer une variable pour rien :)



Voir mieux :

$sql "SELECT COUNT(*) as nbr FROM clients WHERE mailClient"'.$email.'" ";

$query = mysql_query($sql);

$sql = mysql_fetch_array($query, MYSQL_ASSOC);

if ( $sql['nbr'] === 0 ) { ... };



Toutes les fonctions se valent de toute facon.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Effectivement :-)
Messages postés
44
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
24 mars 2006

Je te remercie de ton aide... et de ton appreciation :-)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



" Voir mieux :

$sql "SELECT COUNT(*) as nbr FROM clients WHERE mailClient"'.$email.'" ";

$query = mysql_query($sql);

$sql = mysql_fetch_array($query, MYSQL_ASSOC);

if ( $sql['nbr'] === 0 ) { ... };"



Voire légèrement mieux ^^



Voir mieux :



$requetemysql_query("SELECT COUNT(*) as nbr FROM clients WHERE mailClient'".$email."'");

$sql = mysql_fetch_row($requete);

if ($sql[0] === 0 )

{

//code

}


^^



a +
<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Aussi, mais si tu change la gueule de ta table, et que tu modifies un
peu tout, le $sql[0] ne vaudra peut-être plus la même chose :)

Alors que si tu utilise le fetch_array, et que ton champ s'appèle toujours 'mailClient', y'a moins de problème à ce sujet =)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bah si tu modifies ta requête, tu peux très bien conserver l'ordre des
champs, bref je privilégie la rapidité dans ce cas là, au fetch_array

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
44
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
24 mars 2006

je vous remercie de vos bons conseils.... que j'appliquerai.
A bientôt