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 :

problème boucle requête sql [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Par défaut problème boucle requête sql
    Bonjour,
    J'ai une boucle qui execute une requête SELECT avec PDO à chaque tour de boucle. Voici la partie de la boucle qui me pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $req = null;
    $donnees = null;
    $req = $bdd -> query("SELECT user_id FROM wp_wysija_user WHERE IDsOtodoo = \"".$IDsOtodoo."\";");
    echo"\nContact ayant l'id otodoo ".$IDsOtodoo." : ";
    while($donnees = $req->fetch(PDO::FETCH_ASSOC)){
    	$IDContactBD = $donnees['user_id']; //IDContact du contact dans la bd
    }
    echo $IDContactBD;
    Le problème est le suivant :
    dans un JSON, j'ai une liste de contacts ( 2 pour ce test ). Ce SELECT est censé vérifié si le contact courant existe dans une base de données, via l'id IDsOtodoo. Dans mon exemple, le premier existe et le 2eme n'existe pas. Or, le résultat est le suivant :

    rendu :

    Contact ayant l'id otodoo 120/4 : 9
    Contact ayant l'id otodoo 23/4 : 9

    Il détecte donc que le 2eme contact existe et est le même que le premier, ce qui n'est évidemment pas le cas...
    Le plus surprenant, c'est que lorsque j'inverse les contacts dans le JSON (donc le premier n'existe pas et le 2eme existe), le code détecte bien que le premier n'existe pas ... (c'est pourquoi j'ai rajouté $req=null au début du code). J'ai donc tendance à penser que le deuxième tour de boucle garde quelque chose du premier tour.

    Avez-vous une idée de ce qui se passe ?

    Merci de votre attention, n'hésitez pas à demander plus de détails

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est $IDContactBD que tu ne réinitialises pas à chaque tour de boucle.
    Au passage, utilise plutôt une requête préparée.

    Avant la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth_selectId = $bdd ->prepare("SELECT user_id FROM wp_wysija_user WHERE IDsOtodoo = ?");
    Dans la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sth_selectId->execute(array($IDsOtodoo));
    $IDContactBD = '';
    if ($donnees = $req->fetch(PDO::FETCH_ASSOC)) {
    	$IDContactBD = $donnees['user_id']; //IDContact du contact dans la bd
    }
    echo"\nContact ayant l'id otodoo ".$IDsOtodoo." : ";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Par défaut
    Donc si je comprends bien, la boucle du fetch ne se réalise pas quand la réponse de la requête est nulle. Ca semble logique en effet. Merci beaucoup !

    Oui, j'avais une requête préparée a la base, j'ai essayé la query () pour voir si ca fonctionnait. En revanche, je n'aurais pas pensé a la préparer avant la boucle !

    Je devrais tester tout ca lundi ( je n'ai pas l'environnement adapté ici). J'attends donc pour passer la discussion en résolue merci de ton aide !

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

Discussions similaires

  1. Problème de requête SQL dans une boucle While
    Par Astraya dans le forum VB.NET
    Réponses: 3
    Dernier message: 21/01/2009, 17h18
  2. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15
  3. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07
  4. [SQLserver2000][SQLServer CE] problème de requête SQL
    Par JBernn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/01/2005, 09h29
  5. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

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