Problème de syntaxe dans une requête sql

Résolu
stox -  
 A.Nonymous -
Bonjour,

J'ai un problème dans ma requête SQL, j'aimerais récupérer les infos d'une BDD après une certaine date. Lorsque je met cette date en dur, le code fonctionne bien :
$reponse = $bdd->query('SELECT Date_heure,P1,DATE(Date_heure) AS Date,TIME(Date_heure) AS Time FROM puissance WHERE Date_heure >= \'2012-6-21 17:01:00\' ');

Mais j'aimerais utiliser une variable date à la place, et là mon code ne fonctionne plus :

$debut = '2012-6-21 17:01:00'; // en réalité cette variable est récupérée via un formulaire

$reponse = $bdd->query('SELECT Date_heure,P1,DATE(Date_heure) AS Date,TIME(Date_heure) AS Time FROM puissance WHERE Date_heure >= \'$debut\' ');

Je pense qu'il doit s'agir d'une erreur de syntaxe mais je ne trouve pas ce qu'il faut changer.

3 réponses

  1. A.Nonymous
     
    A priori, c'est une erreur PHP plus que SQL.

    Attention à l'usage des simplte et double-quotes.

    Pour rappel, c'est seulement dans des double-quotes que les variables peuvent être interprétées.

    Attention au format de date, ça pourrait poser problème : 2012-06-21 17:01:00 serait mieux.
    0
    1. stox
       
      J'ai essayé ça aussi mais ça ne fonctionne pas non plus.
      je récupère la date et je la formate de la manière suivante :
      $chaine = $_POST['date_debut'];
      $time = strtotime($chaine);
      $mydate = date('y-m-d H:i:s',$time);

      je crois que c'est plutôt dans la requête que ça pose problème, je ne sais pas sous quelle forme mettre ma variable $mydate.

      quand je fais un echo $mydate, ça me retourne bien la date sous la forme :
      2012-6-21 17:01:00
      0
    2. A.Nonymous
       
      Que donne le SQL résultant ?

      echo 'SELECT Date_heure,P1,DATE(Date_heure) AS Date,TIME(Date_heure) AS Time FROM puissance WHERE Date_heure >= \'$debut\' ';
      0
    3. stox
       
      ça me met une erreur :
      Catchable fatal error: Object of class PDOStatement could not be converted to string in C:\wamp\www\formulaire\test2.php on line 11

      la ligne 11 est :
      echo $reponse;
      ça me met cette erreur même quand j'enlève la condition du WHERE
      0
    4. A.Nonymous
       
      C'est un echo du SQL que j'ai demandé, pas du résultat de l'appel à query()
      0
  2. aladin07 Messages postés 277 Date d'inscription   Statut Membre Dernière intervention   30
     
    $reponse = $bdd->query('SELECT Date_heure,P1,DATE(Date_heure) AS Date,TIME(Date_heure) AS Time FROM puissance WHERE Date_heure >= \'$debut\' ');

    Et bien tu utilises un variable dans des guillemets de type '

    $reponse = $bdd->query("SELECT Date_heure,P1,DATE(Date_heure) AS Date,TIME(Date_heure) AS Time FROM puissance WHERE Date_heure >= '$debut' ");

    Essaies avec ceci
    0
  3. stox
     
    ça fonctionne, merci beaucoup aladin07 !
    0