Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1596 connectés 

 


Dernière réponse
Sujet : [PHP + MySQL] Comment faire pour voir un un champ existe déjà ?
potiron ben c'est pour ca que j'ai rajouté LIMIT 1 dans ma requete !
il ce limite a 1 resultat donc des qu'il le trouve il stop !
evite le count, il est plus gourmand que le select id seul .

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
potiron ben c'est pour ca que j'ai rajouté LIMIT 1 dans ma requete !
il ce limite a 1 resultat donc des qu'il le trouve il stop !
evite le count, il est plus gourmand que le select id seul .
ethernal

potiron a écrit a écrit :

ethernal : suis pas d'accord, en faisant un count (id) tu forces la requete a passer sur TOUTES les lignes de ta table  :sarcastic: hors le but est qu'elle ne lit que tres peu de ligne ...




 
bha chai pas... si tu fais un count(id) where login like '$login' il te retournera qu'une seule ligne, mais c vrai qu'il parcourt les enregs jusqu'a la fin.
faut voir si qd tu lui mets un LIMIT, il s'arrête après avoir trouvé une ligne ou bien s'il continue jusqu'au bout et qu'il ne t'en retourne qu'une dans le recordset... s'ils ont bien codé mysql, c'est ce que ça devrait faire.  Mais je connais pas assez le développement de MySQL pour en être sûr. :(
Si tu me l'affirmes je te crois  :jap:

potiron ethernal : suis pas d'accord, en faisant un count (id) tu forces la requete a passer sur TOUTES les lignes de ta table  :sarcastic: hors le but est qu'elle ne lit que tres peu de ligne ...
 
 
s0d4 : ben fait un bench, c'est tres important de verifier que ta prog/requete sont aux max de leurs capacités !
 
pour mysql tu as une fonction GENIAL qui s'appelle EXPLAIN .... si tu as des conf partout sur des requetes multi-tables alors tu peux etre content de toi .
 
pour PHP la seule soluce que je connaisse c'est de faire un script de bench en calculant le temps en microscondes en 2 actions .
je me suis fait une super interface justement pour tester toutes mes fonctions/idées ... ou je donne le Nb de boucle, et elle fait des moyennes en stockant tout ca dans cookies et txt .
j'ai aussi une fonction qui me permet d'etalonner le bench suivant le PC en le faisant tourner a vide !
n'hesite pas a te faire un script pour tes benchs, c'est tres tres important car des que tu vas passer sur des tables contenant des millions de lignes tu peux pas te permettre la moindre imperfection .
s0d4 comment savoir quelle requete sera plus rapide qu'une autre ?
ethernal

potiron a écrit a écrit :

plutot ceci -> mieux optimisé au niveau SQL et PHP
 
$res=mysql_query("SELECT ID FROM users WHERE login LIKE '$login' LIMIT 1" );
if(mysql_num_rows($res)) echo "Login pris";
 
voila, le tout sur 2 lignes .. tu peux rajouter un DIE a la place du echo ou autre suivant tes besoins  :benetton:  




 
puisqu'on a dit précédemment que  
"select count(id)"
 était plus optimisé pour compter que
$result= mysql_query("select id from ..." );
nb= mysql_num_rows($result);
 
select count(id) as NB from ...";
est plus optimisé que ce que tu dis.
mais je n'ai jamais testé, j'ai cru les autres sur parole... ;)

wouatouwouatou fo tout de meme penser a reformater le login saisi.. :D
potiron j'ai jamais essayé mais tu dois peut etre pouvoir tout mettre sur 1 ligne meme si ca change pas grand chose au niveau des perfs :
 
if( mysql_num_rows(mysql_query("SELECT ID FROM users WHERE login LIKE '$login' LIMIT 1" )) ) echo "Login pris";
potiron plutot ceci -> mieux optimisé au niveau SQL et PHP
 
$res=mysql_query("SELECT ID FROM users WHERE login LIKE '$login' LIMIT 1" );
if(mysql_num_rows($res)) echo "Login pris";
 
voila, le tout sur 2 lignes .. tu peux rajouter un DIE a la place du echo ou autre suivant tes besoins  :benetton:
ethernal exaaaaactement :D
 :jap:
skylight

ethernal a écrit a écrit :

 
 
pq un like ??  




 
case UNsensitive (ignore la casse)

ethernal

skylight a écrit a écrit :

Code :
  1. $result=mysql_query("SELECT ID FROM users WHERE login LIKE '$login'" );
  2. list($login2)=mysql_fetch_row($result);
  3. if ($login2)
  4. die("erreur, login déjà pris" );

 




 
pq un like ??

ethernal oui, ou :
$query="SELECT count(ID) AS nbLogin FROM users WHERE login='$login'";  
$result=mysql_query($query));  
if ($result->nbLogin!=0){  
 ecrire "Erreur, login déjà pris";  
}
skylight

Code :
  1. $result=mysql_query("SELECT ID FROM users WHERE login LIKE '$login'" );
  2. list($login2)=mysql_fetch_row($result);
  3. if ($login2)
  4. die("erreur, login déjà pris" );

s0d4 Voilà, je fais un site, mais quand quelqu'un s'inscrit, il ne faut pas qu'il prenne le même pseudo qu'un autre ... comment on vérifie ça en php ???
j'ai pensé à ça, mais ça marche pas ...

Code :
  1. $query="SELECT ID FROM users WHERE login=$login";
  2. $result=mysql_query($query));
  3. if ($result!="" ){
  4.  ecrire "Erreur, login déjà pris";
  5. }


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR