Probleme insertion variable dans requette sql

Bonjour,
Pourquoi ai-je cette erreur?

Fatal error: Call to a member function fetch() on a non-object in /Users/az/Sites/blog/script/originefoto.php on line 39

Voici le code:

<?php
$im = $_GET['billet_'];
echo $im;

try
{
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '. $e->getMessage());
}

$req = $bdd->query("SELECT nom, emplacement 
                    FROM images
                    WHERE sujet = ".$im."");
                  
while ($donnees = $req->fetch())
{
  echo "<img src ='".$donnees['emplacement'].$donnees['nom']."'/>";
}                    
?>


j'ai egalement aissayé comme ça:

<?php
$im = $_GET['billet_'];
echo $im;

try
{
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '. $e->getMessage());
}

$req = $bdd->query('SELECT nom, emplacement 
                    FROM images
                    WHERE sujet = '.$im.'');
                  
while ($donnees = $req->fetch())
{
  echo "<img src ='".$donnees['emplacement'].$donnees['nom']."'/>";
}                    
?>


la ligne 39 c'est celle ou il y a le while

la seule chose qui marche c'est quand j'inscris directement le contenu de la variable comme ceci:

<?php
$im = $_GET['billet_'];
echo $im;

try
{
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '. $e->getMessage());
}

$req = $bdd->query("SELECT nom, emplacement 
                    FROM images
                    WHERE sujet = 'dfvfv'");
                  
while ($donnees = $req->fetch())
{
  echo "<img src ='".$donnees['emplacement'].$donnees['nom']."'/>";
}                    
?>


Il y a aussi autre chose de bizarre, normalement ma variable $_GET s'intitule
$_GET['billet'], hors pour la récupérer, je suis obligé de l'appeler ainsi $_GET['billet_']
sinon j'ai une erreur m'indiquant que ma variable n'existe pas.

6 réponses

  1. slt

    tu as essayé ça:
    WHERE sujet = '$im'");
    1
    1. bonjour, merci pour la réponse. J'ai essayé comme ça mais ça ne fonctionne pas non plus .

      c'est bizarre, je ne comprend pas pourquoi ça ne fonctionne pas, ni pourquoi je suis obliger d'appeler ma viarible GET $_GET['billet_'] alors que je l'ai construit comme ceci:
      <div onclick="location='originefoto.php?billet = <?php echo $_GET['billet'];?>'"><?php


      ce qui devrait normalement donner $_GET['billet']
      0
      1. enleve l'espace peut être !
        ?billet =<?php
        0
        1. Bon enlever les espaces ne change rien. J'ai donc essayé avec une condition:
          <?php
          $im = $_GET['image_'];
          echo $im;
          
          try
          {
              $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
          }
          catch(Exception $e)
          {
                  die('Erreur : '. $e->getMessage());
          }
          
          $req = $bdd->query('SELECT nom, sujet, emplacement 
                              FROM images
                            ');
                            
          while ($donnees = $req->fetch())
          {
            if($donnees['sujet']) == $im
            {  
             echo "<img src ='".$donnees['emplacement'].$donnees['nom']."'/>";
            }
          }                    
          ?>


          ce qui me renvoie l'erreur suivante:
          Parse error: syntax error, unexpected '==' (T_IS_EQUAL) in /Users/az/Sites/blog/script/originefoto.php on line 41

          la ligne 41 étant celle ou il y a le if
          0
          1. bon, j'ai vu l'erreur , j'avais écris ça:
            if($donnees['sujet']) == $im

            alors que normalement, il faut mettre ça:
            if($donnees['sujet'] == $im)


            j'ai femé la ) trop tot

            cependant, ça ne résout pas mon probleme.
            Voici l'erreur qui est maintenant générée:
            Notice: Undefined index: billet_ in /Users/az/Sites/blog/script/originefoto.php on line 23
            0
        2. c'est bon, ça marche avec une condition, j'ai juste changé ceci:
          $im = $_GET['billet_'];

          en ceci
          $im = $_GET['billet'];


          par je ne sais pas pourquoi ça ne fonctionne pas avec le WHERE
          0
          1. heuuu non en fait ça marche plus, j'ai à nouveau cette erreur

            Notice: Undefined index: billet in /Users/az/Sites/blog/script/originefoto.php on line 23

            j'y comprend plus rien ça à fonctionné un coup, et maintenant, alors que je n'ai rien changé, ça marche plus
            0