Bonjour à tous,

Je m'embete avec un truc de bete.

Je fais une requete pour extraire des positions d'une base de donnée MySL. Je fais donc un select

Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
	if(isset($_POST['h']))
	{
		$hour = intval($_POST['h']);
	}else{
		$hour = 1;
	}
if(isset($_POST['devise_id']))
	{
		$devise_id = $_POST['devise_id']; // J'ai aussi essayé avec intval() come pour l'heure
	}else{
		$devise_id = 0;
	}
 
	try{
 	   $conn = new PDO('mysql:host='.$cfg_db_host.';charset=utf8;dbname='.$cfg_db_db, $cfg_db_user , $cfg_db_password);
	}
	catch (Exception   $e){echo json_encode(array("retour"=>'Erreur de connexion à la bdd', "e" => $e )); die();}
 
	$sql = 'SELECT * FROM positions WHERE devise_id LIKE 1 AND timestamp >= DATE_SUB(NOW(), INTERVAL '.$hour.' HOUR) ORDER BY timestamp ASC';
	//$sql = 'SELECT * FROM positions WHERE devise_id LIKE '.$devise_id.' AND timestamp >= DATE_SUB(NOW(), INTERVAL '.$hour.' HOUR) ORDER BY timestamp ASC';

Comme indiqué ci-dessus, ca fonctionne.

En revanche que j'inverse mon sélect en décommentant la premiere
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
// Premiere ligne:
//$sql = 'SELECT * FROM positions WHERE devise_id LIKE 1 AND timestamp >= DATE_SUB(NOW(), INTERVAL '.$hour.' HOUR) ORDER BY timestamp ASC';
// Deuxième ligne:
$sql = 'SELECT * FROM positions WHERE devise_id LIKE '.$devise_id.' AND timestamp >= DATE_SUB(NOW(), INTERVAL '.$hour.' HOUR) ORDER BY timestamp
Ca ne mearche plus.

Par exemple, j'ai des position enregistrée il y a 12 heures. Si hour prend la valeur de 12, il m'affiche qu'une seule position, alors que si je commente la deuxième ligne et décommente la premiere, comme avant, ca marche.

Qu'es-ce qu'il y a de faux dans mon $sql?
J'utlise sublime et il me colorise le texte pour distinguer le code
Il doit avoir un bug, car quand j'utilise ma deuxième ligne, le AND après '.$devise_id.', n'est plus rouge alors qu'il est dans ma premiere ligne

Merci pour votre avis