Bonjour à tous!


J'ai un problème avec une fonction préparé pdo depuis des jours et je trouve pas la solution alors je viens vous voir, peut-être que quelqu'un saura m'aider...

Voici la requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
$this->requetePrepareRecherche = $this->db->getConnexion()->prepare("SELECT tmp.id,get_distance_metres(:latitudePointCentral, :longitudePointCentral, tmp.latitude, tmp.longitude) distance ,COUNT(tmp.id) cpt  FROM  
					(
					select u.latitude, u.longitude, u.id from UTILISATEUR u inner join COMPETENCES c on u.id=c.id_utilisateur where c.id_metier IN (:competence1) and dateDeNaissance between :date_inf and :date_inf and derniere_connexion between :date_derniereConnexion_inf and :date_derniereConnexion_sup and is_active=1
					UNION ALL
					select u.latitude, u.longitude, u.id from UTILISATEUR u inner join COMPETENCES c on u.id=c.id_utilisateur where c.id_metier IN (:competence2) and dateDeNaissance between :date_inf and :date_inf and derniere_connexion between :date_derniereConnexion_inf and :date_derniereConnexion_sup and is_active=1
					UNION ALL
					select u.latitude, u.longitude, u.id from UTILISATEUR u inner join COMPETENCES c on u.id=c.id_utilisateur where c.id_metier IN (:competence3) and dateDeNaissance between :date_inf and :date_inf and derniere_connexion between :date_derniereConnexion_inf and :date_derniereConnexion_sup and is_active=1
					)tmp
group by tmp.id 
having distance < :distanceMax
order by cpt desc")
et voici comment je l'appelle :

Code : 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
$this->requetePrepareRecherche->bindValue(':competence1', $competencePrincipalRechercheParam, PDO::PARAM_INT);
			$this->requetePrepareRecherche->bindValue(':competence2', $competenceSecondaireRecherche1Param, PDO::PARAM_INT);
			$this->requetePrepareRecherche->bindValue(':competence3', $competenceSecondaireRecherche2Param, PDO::PARAM_INT);
			$this->requetePrepareRecherche->bindValue(':date_inf', $date_inf, PDO::PARAM_STR);
			$this->requetePrepareRecherche->bindValue(':date_sup', $date_sup, PDO::PARAM_STR);
			$this->requetePrepareRecherche->bindValue(':date_derniereConnexion_inf', $date_derniereConnexion_inf, PDO::PARAM_STR);
			$this->requetePrepareRecherche->bindValue(':date_derniereConnexion_sup', $date_derniereConnexion_sup, PDO::PARAM_STR);
			$this->requetePrepareRecherche->bindValue(':latitudePointCentral', $latitudeParam, PDO::PARAM_INT);
			$this->requetePrepareRecherche->bindValue(':longitudePointCentral', $longitudeParam, PDO::PARAM_INT);
			$this->requetePrepareRecherche->bindValue(':distanceMax', $distanceMaxParam, PDO::PARAM_INT);
 
				//les données sont retournée sous forme d'objet;
			$associe=$this->requetePrepareRecherche->fetchAll(PDO::FETCH_OBJ)or die(print_r($this->requetePrepareRecherche->errorInfo(), TRUE));;
 
//	print $associe;
	print "<br/>".var_dump($associe);
et enfin voici ce qu'affiche le print à la fin :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Array ( [0] => 00000 [1] => [2] => )
J'ai aussi printé toutes les valeurs passé en param :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
liste : 20,19,18,17,16,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
liste2 : 20,19,18,17,16,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
liste3 : 20,19,18,17,16,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
date_inf : 1911-11-11
date_sup : 1993-11-11
date_derniereConnexion_inf : 2011-08-11
date_derniereConnexion_sup : 2011-11-12
latitudePointCentral : 48.8582
longitudePointCentral : 2.29452
distanceMaxParam : 10000000

Mon problème est que cette fonction ne retourne rien, alors que si je la colle dans phpmyadmin en remplaçant les variable par leur valeur et en ajoutant des quote autour des dates j'ai des données qui me sont retournées.

Avant d'utiliser bindvalue j'utilisait execute avec un tableau mais le résultat était le même...

get_distance_metres est une fonction mysql qui fonctionne, pas de problème de ce côté la. Je pense que je dois avoir une erreur au niveau du passage des paramètres mais je vois pas ou...

Quelqu'un aurait une idée? merci d'avance...