IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Erreur 500 quand j'essaie d'afficher le résultat d'une requête préparée PDO de type SELECT [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Erreur 500 quand j'essaie d'afficher le résultat d'une requête préparée PDO de type SELECT
    Bonjour tout le monde,

    J'interroge une base de données avec des données provenant d'un fichier .json

    La requête de sélection fonctionne, mais une fois que j'essaie d'afficher le résultat de la requête avec fetch par exemple, j'obtiens une erreur 500, que je ne trouve même pas dans les logs !

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    $string = file_get_contents("export.json");
     
      $json_a = json_decode($string, true);
     
     
      $eof = count($json_a['items']);
     
     
      for($i=0;$i<$eof;$i++)
      {
          $nom = utf8_decode($json_a['items'][$i]['nom']);
          $prenom = utf8_decode($json_a['items'][$i]['prénom']);
     
     
     
          $req_existance = $connection->prepare('SELECT * FROM pharmacien
                                                 WHERE nom = ":nom" AND prenom = ":prenom" ');
          //    //j'utilise le nom et prenom trouvés dans le json
              $data = array(':nom'=> $nom,
                            ':prenom' => $prenom);
     
              $res = $req_existance->execute($data);
     
    }
    avec ce print_r, j'ai une erreur interne 500 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r($res->fetch());
    Voyez-vous une erreur quelque part ? J'ai tout essayé, sans succès.

    Je confirme que quand j'affiche la valeur de $i avant de mettre le print_r, j'ai bien de 0 à 716.

    Merci d'avance pour l'aide.

    bee

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Et si tu mets le prepare en dehors de la boucle ?
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par badaze Voir le message
    Et si tu mets le prepare en dehors de la boucle ?
    Salut,
    Merci pour ta réponse.

    Cela ne change malheureusement rien, toujours cette erreur 500.

    Bonne journée.

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Salut.
    D'abord, as-tu vérifié que $connection est bonne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($connection instanceof PDO){
       echo 'Connexion établie';
    }
    Ensuite que donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $nom.' '.$prenom.'<br/>';
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut,

    Merci pour ta réponse.

    Je confirme, la connexion fonctionne : Connexion établie

    BARTHELOME Murielle
    VANGANSBEKENNE Bernardette
    PARVIS Olivia
    Ce sont donc les noms qui sont présents dans le fichier json.

    Encore merci pour ton aide.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1-
    Citation Envoyé par beegees Voir le message
    ...j'ai une erreur interne 500...
    Quel est le message précis ?

    2-
    ...Je confirme, la connexion fonctionne : Connexion établie
    Ce sont donc les noms qui sont présents dans le fichier json...
    Quel est le rapport ?
    On te parles de connexion à la base de données, tu réponds que tu récupères bien les noms dans le fichier json...

    ... Je confirme que quand j'affiche la valeur de $i avant de mettre le print_r, j'ai bien de 0 à 716...
    Euh.... tu nous montres 3 noms/prénoms, or le compteur va jusque 716 ??
    "Y'a comme un défaut..."

    3- Et OUI, il FAUT préparer la requête EN DEHORS de la boucle.
    C'est un des intérêts d'une "requête préparée" : la préparée UNE fois, l'exécuter PLUSIEURS fois.

    4- à priori, on peut utiliser avantageusement foreach ici.
    A vérifier avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump( $json_a['items'] );
    5- '... nom = ":nom" ...' : La clé du problème vient peut-être du fait qu'il ne faut pas mettre de double-quote (ou autre) autour des placeholders nommés : '... nom = :nom ...'.

    Tu devrais mettre un "try catch" autour du code d'exécution de la requête.
    (mais je n'ai pas besoin de le dire : tu sais faire un débogage de base)

    Au final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php
    require_once('connexion_pdo.php');
     
    $string = file_get_contents("export.json");
    $json_a = json_decode($string, true);
     
    $sql_existence = "SELECT * 
    	FROM pharmacien
    	WHERE nom = :nom 
    	AND prenom = :prenom";
    $req_existence = $connection->prepare($sql_existence);
     
    foreach( $json_a['items'] as $i => $item )
    {
    	$nom = utf8_decode( $item['nom'] );
    	$prenom = utf8_decode( $item['prénom'] );
     
    	//j'utilise le nom et prenom trouvés dans le json
    	$params = array(
    		':nom'=> $nom,
    		':prenom' => $prenom);
       try {
    	$res = $req_existence->execute($params);
       } catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
    }
    Dernière modification par Invité ; 12/11/2018 à 11h19.

  7. #7
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour jreaux62,

    Je reviens vers toi sur le tard, mais je reviens vers toi.

    Mille merci pour ta solution qui fonctionne à la perfection.

    J'ai dû m'arrêter pendant quelques semaines, c'est pour cela que je ne reviens que maintenant vers toi pour te remercier et pour te confirmer que ça fonctionne.

    Encore mille mercis et bon réveillon pour ce soir.

    bee

  8. #8
    Invité
    Invité(e)
    Par défaut
    +1


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher le résultat d'une requête avec des côtes
    Par sweet_hell dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/10/2006, 10h32
  2. [SQL] Afficher les résultats d'une requête sur plusieurs pages
    Par mealtone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/09/2006, 13h20
  3. [SQL] Est-il possible d'afficher le résultat d'une requête dans un cadre
    Par dessinateurttuyen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/07/2006, 17h52
  4. Réponses: 11
    Dernier message: 20/06/2006, 11h10
  5. Réponses: 5
    Dernier message: 14/06/2006, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo