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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MySql : like puis différence de résultat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MySql : like puis différence de résultat

n°316650
kileak2
Posté le 24-02-2003 à 16:44:04  profilanswer
 

salut
 
le titre n'est pas très explicite désolé mais il m'arrive un truc zarbe :
 

Code :
  1. requete :
  2. $name=toto ;
  3. $req = "select * from mabase where nom like '%".$name."%'" ;
  4. $requete=mysql_db_query($sql_bdd,$req,$db_link);
  5. $data = mysql_fetch_array($requete) ;


 
j'ai dans ma base un 'toto' , un 'pretoto' et un 'totosuffix'
 

Code :
  1. Résultat :
  2. for ($i=0;$i<mysql_num_rows($requete);$i++)
  3. {
  4. echo($data['nom']."<br>" ) ;
  5. echo(mysql_result($requete,$i,'nom')."<br>" );
  6. }


 
Dans le 1er cas (1er echo), j'ai 3 'toto' :
toto
toto
toto
 
Dans le second :
toto
pretoto
totosuffix
 
Pkoi dans le 1er cas, il ne prend que la chaine exact ?
c une spécif de cette syntaxe ?
 
Merci
a+


Message édité par kileak2 le 24-02-2003 à 16:45:25
mood
Publicité
Posté le 24-02-2003 à 16:44:04  profilanswer
 

n°316659
Sh@rdar
Ex-PhPéteur
Posté le 24-02-2003 à 16:52:08  profilanswer
 

relis la doc concernant mysql_fetch_array()...
 
chaque appel retourne la ligne courante sous forme de tableau et avance le pointeur de résultat MySQL d'une ligne, ou returne FALSE si y'a plus de résultats
 
si tu fais un seul appel à mysql_fetch_array() ton pointeur n'avance pas et il t'affiche toujours la même ligne...
 
de plus utiliser mysql_result() est très fortement déconseillé...

n°316877
kileak2
Posté le 24-02-2003 à 20:54:45  profilanswer
 

Sh@rdar a écrit :

relis la doc concernant mysql_fetch_array()...
 
chaque appel retourne la ligne courante sous forme de tableau et avance le pointeur de résultat MySQL d'une ligne, ou returne FALSE si y'a plus de résultats
 
si tu fais un seul appel à mysql_fetch_array() ton pointeur n'avance pas et il t'affiche toujours la même ligne...
 
de plus utiliser mysql_result() est très fortement déconseillé...


 
merci
 
je suis allé sur Nexen mais j'ai pas eu trop le temps de me plonger dedans.
Juste comme ca, tu conseilles koi de "rapide" pour faire un truc genre un moteur de recherche dans ton site qui fatalement mouline pas mal ?
 
EDIT : en zieutant sur des sites tutoriaux (asp-php.net pour ne pas le citer) j'ai compris :
 

Code :
  1. while ($data = mysql_fetch_array($requete))
  2. {
  3. echo("login ".$data['nom']."<br>" ) ;
  4. }


 
C'est bon ca en perf ?
 
De même, un type de connexion proposé par asp-php.net est :
 

Code :
  1. <?
  2. // Paramètres persos
  3. $host = "localhost"; // voir hébergeur
  4. $user = "login"; // vide ou "root" en local
  5. $pass = "password"; // vide en local
  6. $bdd = "ma_base"; // nom de la BD
  7. // connexion
  8. @mysql_connect($host,$user,$pass)
  9.    or die("Impossible de se connecter" );
  10. @mysql_select_db("$bdd" )
  11.    or die("Impossible de se connecter" );
  12. ?>


le @ sert à koi ? c parce qu'il n'y a pas d'affectation genre :
 
$connection = mysql_connect($host,$user,$pass)
 
 
Enfin, kel est l'intéret de mettre un mot de passe puisque il sera en clair ds le fichier de connexion.php ?
 
 
a+
 
merci


Message édité par kileak2 le 24-02-2003 à 23:04:25
n°316964
mrbebert
Posté le 24-02-2003 à 23:08:40  profilanswer
 

Je pense pas qu'il y ait de différence de perfs :)
 
Le @ devant un appel de fonction sert à désactiver l'affichage d'erreurs (les "warning : ...." que tu as parfois).


Message édité par mrbebert le 24-02-2003 à 23:09:51
n°317109
kileak2
Posté le 25-02-2003 à 09:47:22  profilanswer
 

mrBebert a écrit :

Je pense pas qu'il y ait de différence de perfs :)
 
Le @ devant un appel de fonction sert à désactiver l'affichage d'erreurs (les "warning : ...." que tu as parfois).


 
merci
 
d'autres avis par rapport à mes questions ?
 
a+

n°317735
mrbebert
Posté le 25-02-2003 à 19:54:37  profilanswer
 

moi m'sieur, moi, je peux donner mon avis ? :D  
 
C'est bien d'utiliser le mysql_fetch_array. C'est surement la solution la plus lisible, et certainement très performante :)  
Faut juste faire attention aux résultats.
Si tu as une requête qui te renvoie une seule colonne avec le résultat suivant :

aaa
NULL
bbb

il va y avoir un problème en le parcourant. En arrivant à la deuxième ligne, le mysql_fetch_array() sera évalué à faux et tu quitteras la boucle.
C'est rare comme situation mais toujours bon à savoir ;)  
 
Pour le mot de passe, c'est important. Un serveur SQL peut être accédé par plusieurs utilisateurs, ce serait dommage que n'importe qui puisse écrire un script accédant à tes données. Bien sur, le fichier qui contient le mot de passe ne doit pas être accessible à n'importe qui.

n°317996
kileak2
Posté le 26-02-2003 à 09:05:53  profilanswer
 

mrBebert a écrit :

moi m'sieur, moi, je peux donner mon avis ? :D  
 
C'est bien d'utiliser le mysql_fetch_array. C'est surement la solution la plus lisible, et certainement très performante :)  
Faut juste faire attention aux résultats.
Si tu as une requête qui te renvoie une seule colonne avec le résultat suivant :

aaa
NULL
bbb

il va y avoir un problème en le parcourant. En arrivant à la deuxième ligne, le mysql_fetch_array() sera évalué à faux et tu quitteras la boucle.
C'est rare comme situation mais toujours bon à savoir ;)  
 
Pour le mot de passe, c'est important. Un serveur SQL peut être accédé par plusieurs utilisateurs, ce serait dommage que n'importe qui puisse écrire un script accédant à tes données. Bien sur, le fichier qui contient le mot de passe ne doit pas être accessible à n'importe qui.


 
Merci.
 
Ben c pas si rare que ca ! Si tu as une colonne facultative qui peut etre à NULL et bien ca peut arriver.
A moins que tu ne fasses un "select *". Mais quel est l'intérêt de faire un "select *" si tu sais que tu ne veux qu'un champs ?
 
Ok pour la protection de ta base ! Je mets ca ds un répertoire "PROTEC" (par exemple) puis je fais un fichier .htaccess
c ca ?
 
grazie

n°318066
kileak2
Posté le 26-02-2003 à 10:36:01  profilanswer
 

kileak2 a écrit :


 
Merci.
 
Ben c pas si rare que ca ! Si tu as une colonne facultative qui peut etre à NULL et bien ca peut arriver.
A moins que tu ne fasses un "select *". Mais quel est l'intérêt de faire un "select *" si tu sais que tu ne veux qu'un champs ?
 
Edit : je viens de faire plusieurs tests et je ne sors jamais de la boucle. Qq soit la position de mon champs NULL et même si je fais juste un select sur la zone qui contient des valeurs NULL.
 
Ok pour la protection de ta base ! Je mets ca ds un répertoire "PROTEC" (par exemple) puis je fais un fichier .htaccess
c ca ?
 
grazie

n°318633
mrbebert
Posté le 26-02-2003 à 19:15:03  profilanswer
 

Le fichier .htaccess, c'est seulement pour la protection au niveau du serveur http.
Il y a 2 possibilités d'accès :
- par quelqu'un connecté sur le serveur : là, ce sont les droits d'accès aux fichiers qui jouent.
- par le serveur web : il suffit de nommer le fichier en .php (ou n'importe quelle extension traitée par le serveur web). Ainsi, le serveur exécutera le fichier au lieu de renvoyer directement son contenu.

n°318649
kileak2
Posté le 26-02-2003 à 19:53:06  profilanswer
 

mrBebert a écrit :

Le fichier .htaccess, c'est seulement pour la protection au niveau du serveur http.
Il y a 2 possibilités d'accès :
- par quelqu'un connecté sur le serveur : là, ce sont les droits d'accès aux fichiers qui jouent.
- par le serveur web : il suffit de nommer le fichier en .php (ou n'importe quelle extension traitée par le serveur web). Ainsi, le serveur exécutera le fichier au lieu de renvoyer directement son contenu.


 
ok :) Y avait un quiproquo :)
 
a+ merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MySql : like puis différence de résultat

 

Sujets relatifs
mettre id dans ref_id en mysql[MySQL] Cacher un mot de passe
[MySQL] Pb de tri avec une requete.[Concours] Votre Requête MySQL la plus complexe
Comment créer des relations,cardinalités entre les tables en mysql??Comment créer des relations,cardinalités entre les tables en mysql??
Existe-t-il qqch comme EasyPHP qui marche avec PostGres ? (pas MySQL)MySql : Alter Table ....ADD
[MySQL] Peut on se connecter avec 2 bases de données en meme tps????Probleme de requette sur mysql
Plus de sujets relatifs à : MySql : like puis différence de résultat


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