Problème de syntaxe dans une requête sql

[Résolu/Fermé]
Signaler
-
 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

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.
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
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\' ';
ç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
C'est un echo du SQL que j'ai demandé, pas du résultat de l'appel à query()
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
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
ça fonctionne, merci beaucoup aladin07 !