Problème de variable dans requête MYSQL WHERE

Bonjour à tous

Voici mon souci j'ai une base MYSQL que j'aimerai interroger via PDO de la manière suivante :

Cette ligne ne fonctionne pas car je n'arrive pas à intégrer une variable déclarée plus haut dans ma page (et que je retrouve bien en écho)

<?php  echo $_GET["ph_id"];  
$id=$_GET['ph_id']; 
echo $id; 
?><br /> 

$reponse = $bdd->query('SELECT path, id FROM id_ph WHERE id=\''$id'\'');  


Par contre cette ligne fonctionne en mode manuel

<?php  echo $_GET["ph_id"];  
$id=$_GET['ph_id']; 
echo $id; 
?><br />    

$reponse = $bdd->query('SELECT path, id FROM id_ph WHERE id=\'ph_A001\''); 

A ce moment je récupère bien ma valeur sans problème

Merci de toute l'aide que vous pourrez m'apporter

4 réponses

  1. $reponse = $bdd->query('SELECT path, id FROM id_ph WHERE id=\''$id'\'');

    Normalement :

    $reponse = $bdd->query('SELECT path, id FROM id_ph WHERE id=\''.$id.'\'');
    1
    1. Sinon
      $reponse = $bdd->query("SELECT path, id FROM id_ph WHERE id= '$id' ");
      0
    2. C'est bien ce qu'il me semblait aussi :o)
      0
    3. Oui c'était bien une histoire de quote comme trop souvent :(

      Avis aux gens en galère cette ligne fonctionne :
      $reponse = $bdd->query('SELECT path, id FROM id_ph WHERE id='.$id.''); 
      0
    4. En tout cas merci à tous ce forum est très réactif :) C'est très plaisant :)
      0
  2. salut,

    Passe plutôt par les requêtes préparées, c'est plus sécurisé et ça pose moins de souci.

    exemple

    <?php 
    $req = $bdd->prepare('SELECT path, id FROM id_ph WHERE id= ?'); 
    $req->execute(array($id)); 
    ?>
    0
    1. Merci de ta réponse mais le problème persiste même si ta proposition permet un bien meilleur code et je t'en remercie :)

      car

      $req = $bdd->prepare('SELECT path, id FROM id_ph WHERE id= '$id'');
      $req->execute(array($id));

      Ne fonctionne pas si j'inclue la variable
      0
      1. si on préparer une requête, c'est pas pour y mettre la variable dedans, on utilisera dans ce cas des marqueur sois ? ou :lenom

        http://www.siteduzero.com/tutoriel-3-14506-lire-des-donnees.html#ss_part_4
        0
      2. Ok je vais potasser ce lien merci beaucoup :)
        En attendant j'ai ce code qui fonctionne finalement je le met pour aider au cas où ce n'est pas aussi bien que le code que tu m'as proposé mais bon ca fait le boulot en attendant mieux :)

        $reponse = $bdd->query('SELECT path, id FROM id_ph WHERE id='.$id.'');

        Merci
        0
    2. À coup sûr, c'est cette ligne qui pose problème :
      $reponse = $bdd->query('SELECT path, id FROM id_ph WHERE id=\''$id'\'');

      Il y a trop de guillemets autour de la variable $id. Ou alors il faut ajouter un point de part et d'autre de la variable (pour la concaténer à la chaine de caractère).
      0