Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2011, 06h38   #1
Invité régulier
 
Inscription : décembre 2010
Messages : 34
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 34
Points : 7
Points : 7
Par défaut ma recherche est introuvable

Bonjour à tous.

Je n'arrive pas a récupérer des données.

TB_MAP est defined = 'ma_table'

Soit une table:
Code :
1
2
3
4
5
6
7
8
9
 
CREATE TABLE `ma_table` (
  `prenom`      varchar(20) NOT NULL DEFAULT '',
  `nom`      	varchar(50) DEFAULT NULL,
  `age`         tinyint(1) NOT NULL DEFAULT 0,
  `ville`       varchar(50) DEFAULT NULL,
  `pays`        varchar(50) DEFAULT NULL,
  PRIMARY KEY  (`prenom`)
) TYPE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
Je souhaite retrouver l'age de Paul sachant qu'il n'y a qu'un
seul Paul dans ma base.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 $prenom = 'Paul'; 
    $my_connect = mysql_connect($K['host'], $K['user'], $K['pass']);
    IF (!$my_connect) { die('Could not connect: ' . mysql_error($my_connect));  } 
    mysql_select_db($K['name'],$my_connect) OR die(mysql_error($my_connect));
    $query = "SELECT prenom
              FROM " . TB_MAP . "
              WHERE prenom = '" . $prenom . "'";
    $result = mysql_query($query,$my_connect) OR die("Invalid query: " . mysql_error($my_connect).__LINE__.__FILE__);
    $stored  = mysql_fetch_array($result); 
 
    echo 'array length...: '.count($stored).'<br />';    // Pour tester seulement
 
    IF ($stored['prenom'] == $prenom) { $age = $stored['age']; }  // le conditionnel est OK, pas l'assignation
 
 
      mysql_free_result($result);
      mysql_close($my_connect);
Problème:
1- count($stored) renvoie 2 alors que ce devrait être 5
2- dans la foulée et pour cause $stored['age'] est vide, mais pas $stored['prenom']...!

Pourquoi docteur...?

Ou est mon bug...?

Merci grandement pour une éventuelle solution.

Cordialement @ tous.

-= Guy =-
gdlmus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 09h16   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 656
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 656
Points : 2 658
Points : 2 658
Bonjour,


Pour le 2 :
votre requête est
Code :
1
2
3
 
SELECT prenom
FROM ..
Si vous ne sélectionnez pas l'âge comment voullez-vous avoir une valeur dans $stored['age'] ?

Du coup vous devez en déduire le problème du 1.
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 09h19   #3
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 531
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 531
Points : 3 524
Points : 3 524
Citation:
Envoyé par gdlmus Voir le message
Je souhaite retrouver l'age de Paul sachant qu'il n'y a qu'un
seul Paul dans ma base.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 $prenom = 'Paul'; 
    $my_connect = mysql_connect($K['host'], $K['user'], $K['pass']);
    IF (!$my_connect) { die('Could not connect: ' . mysql_error($my_connect));  } 
    mysql_select_db($K['name'],$my_connect) OR die(mysql_error($my_connect));
    $query = "SELECT prenom
              FROM " . TB_MAP . "
              WHERE prenom = '" . $prenom . "'";
    $result = mysql_query($query,$my_connect) OR die("Invalid query: " . mysql_error($my_connect).__LINE__.__FILE__);
    $stored  = mysql_fetch_array($result); 
 
    echo 'array length...: '.count($stored).'<br />';    // Pour tester seulement
 
    IF ($stored['prenom'] == $prenom) { $age = $stored['age']; }  // le conditionnel est OK, pas l'assignation
 
 
      mysql_free_result($result);
      mysql_close($my_connect);
Problème:
1- count($stored) renvoie 2 alors que ce devrait être 5
2- dans la foulée et pour cause $stored['age'] est vide, mais pas $stored['prenom']...!

Pourquoi docteur...?

Ou est mon bug...?
Saluton,
deux choses :
  1. Pourquoi $- count($stored) devrait être à 5 s'il n'y a qu'un 'Paul' dans la table ?
  2. Que $stored['age'] soit vide n'a rien d'étonnant puisque la colonne ne figure pas dans la projection demandée à la clause SELECT..
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/11/2011, 17h58   #4
Invité régulier
 
Inscription : décembre 2010
Messages : 34
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 34
Points : 7
Points : 7
Bonjour @ tous,

Merci à "Maljuna Kris" & "punkoff", vos commentaire m'ont mis la puce à l'oreille et j'ai trouvé ma solution en modifiant mon query comme suit:

Code :
1
2
3
4
    $query = "SELECT age
              FROM " . TB_MAP . "
              WHERE prenom = '" . $prenom . "'";
Cordialement.

-= Guy =-
gdlmus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h51.


 
 
 
 
Partenaires

Hébergement Web